OAAS — Oracle Agent Application Specialist
Battle-tested, evidence-based skills for Oracle Forms → APEX migration tooling, packaged for AI coding agents (and for humans).
This repository is a curated set of Claude Skills
— self-contained SKILL.md files — distilling hard-won, non-obvious
knowledge about the Oracle Forms → Oracle APEX migration domain: the XML
interchange format, the compiler toolchain, cost/risk assessment
methodology, target-language code generation, CLI automation, and
compliance concerns.
Every rule in every skill was verified against real tool output, real compiler errors, and real generated artifacts — not copied from documentation and not guessed. Where a rule is inferred rather than directly observed, the skill says so explicitly. Where the source material had a gap, the skill names the gap instead of quietly papering over it. That discipline — evidence before conclusion — is the actual point of this repository, not just the individual facts inside it.
If you're an AI coding agent (Claude Code, or any agent framework that
understands the Skills format), point it at this repo and it will know when
to reach for each skill from the description frontmatter. If you're a
human doing Forms/APEX migration work, read them like you'd read a very
opinionated, very specific internal wiki — because that's exactly what they
are.
Forms → APEX migration knowledge is scattered across forum posts, decade-old blog entries, vendor documentation that describes intent rather than actual tool behavior, and — mostly — the scar tissue of people who hit an undocumented failure mode and figured it out the hard way. A huge fraction of that knowledge never gets written down at all; it just lives in one engineer's head until they change jobs.
This repo is an attempt to write down the parts that are the hardest to rediscover: the failures that are silent (no error, wrong result), the failures that are misleading (an error message that points at the wrong layer), and the rules that are asymmetric in a way that breaks any generator built on a "treat similar things similarly" assumption.
| Skill | What it covers |
|---|---|
oracle-forms-xml-format |
The Forms2XML/XML2Forms XML dialect — namespace, double-escaped newlines, the LovName case trap, structural ordering rules the XSD can't express, palette-name colors, the Bevel default, and the properties that pass XSD + converter + compiler and still fail at runtime (MaximumLength, Not Allowed check boxes, view blocks) |
oracle-forms-compile-and-convert |
Locating any Forms toolchain layout (fixed candidates, then a jlib-keyed scan of C:\Oracle for the home the installer let someone name) and driving Forms2XML / XML2Forms / frmcmp / FSAL from the command line — including the silent ORA-12705 failure, the help=yes deadlock, and the GUI-subsystem frmcmp.exe that returns before it has compiled anything |
forms-to-apex-assessment |
A defensible verdict/cost/risk model for scoping a migration — the closed-catalog principle, portfolio-level deduplication, and dependency-graph honesty rules |
apexlang-generation |
Generating valid APEXlang for APEX 26.1 — item/label mapping (MultiLine → textarea, the honest textField fallback), the 12-column layout engine, a two-act case study on a bug that apex validate cannot catch, the ORDS render-time check, and byte-deterministic archives |
sqlcl-apex-cli |
Driving SQLcl non-interactively — the mandatory -thin flag, why apex import/apex validate can exit 0 on a failed deploy, the password-resolution order and three-valued exit code a wrapper owes its pipeline, and where the APEXlang vocabulary actually lives |
apex-runtime-verification |
Proving an imported application actually behaves — rendering as a temporary end user instead of making a page public, the wwv_flow.accept submit protocol (the pPageItemsProtected chunk trap and the per-item ck checksum), reading inline versus notification errors, the negative control that separates working rules from a page that rejects everything, and why the user reads the validation's errorMessage and never the ORA- it raises |
forms-apex-cicd-pipeline |
Continuous delivery for Forms → APEX output — what a Forms repository commits versus what it builds, the four things that break a deterministic export, the export → validate → import gate, secrets → stdin credential flow, the pull-request structural-diff job, and what a green run still does not prove |
sensitive-data-and-egress-policy |
Scanning client source for credentials/PII with check-digit validation, and classifying AI-provider egress by effective host, not vendor name |
oracle-repo-hygiene |
What must never be committed in a Forms/APEX tooling repo (compiled .fmx and frmcmp logs included), idempotent DDL, a six-step audit — C2PA image manifests included — for open-sourcing a client-derived codebase, and release hygiene for a frozen engine that reports the version that was installed rather than the one in pyproject.toml |
Each skill links to the others it builds on or feeds into — read the Related skills section at the bottom of any file to follow the thread.
Every non-trivial rule in this repository follows the same three-part shape, adapted from the "evidence before conclusion" method this repo was built with:
- Rule — the exact, actionable fact.
- Why it matters — the failure mode you get if you don't know it, and why the rule exists rather than some other plausible-sounding alternative.
- Evidence / calibration — what was actually observed (a real error message, a real compiler behavior, a real fixture result) that backs the rule up.
This is deliberate: a rule with no stated failure mode is easy to skim past and forget; a rule with no evidence is indistinguishable from a guess.
This repository does not currently cover:
- Oracle E-Business Suite (GL, concurrent programs, EBS integrations).
- Oracle Database 23ai/26ai feature-specific content.
- A PL/SQL coding-standards / style guide (the PL/SQL material here is about extracting and analyzing PL/SQL, and about idempotent DDL — not about how to write idiomatic PL/SQL day to day).
- A vendored copy of
forms.xsd— it's referenced as a validation target available inside any Forms install, not shipped here. - SQLcl
project-based promotion (DEV → TEST → PROD) and exporting an application back from APEX after Page Designer edits — named as the next phase informs-apex-cicd-pipeline, not yet backed by evidence.
If you have hard-won knowledge in any of these areas, that's exactly the kind of contribution this repo is looking for — see below.
Drop this repository (or symlink it) into a location your agent scans for
skills, and each SKILL.md's frontmatter description is enough for the
agent to decide when it's relevant — no manual invocation required. Every
skill is also plain, standalone Markdown: perfectly readable, and useful, on
its own with no agent involved at all.
Contributions are welcome, with one hard requirement: every rule needs evidence. A pull request that adds "I think this is how it works" without a concrete, reproducible observation behind it will be asked to bring one. Equally welcome: corrections to anything here that turns out to be wrong, version-specific, or narrower than currently stated — Oracle's own tooling changes behavior across releases, and a rule that was true on one version combination deserves a note about which one.
Please also scrub anything client-, employer-, or project-specific before
opening a PR: no company names, no real hostnames, no credentials, no
personal file paths. Use placeholders (<HOME>, <password>,
<connect_string>) exactly as the existing skills do.
MIT — use this freely, attribution appreciated but not required.