Extract a complete, source-traceable legacy evidence specification for one Oracle Forms module from Forms XML/FMT/FMB/FMX, PLL/PLD, DDL, message catalogues, menus/object libraries, and screenshots. Use for fresh or incremental reverse engineering when the output must preserve every evidenced screen region, tab, field, operation, rule, message, database dependency, provenance locator, uncertainty, and source-supported detail without inventing target requirements, target architecture, target tests, POC assumptions, or implementation decisions.
63
74%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.codex/skills/leg-spec-from-code-oracle/SKILL.mdProduce a faithful evidence package for one selected Oracle Forms module. This is stage 1 of a two-stage legacy requirements workflow:
leg-spec-from-code-oracle extracts what the supplied legacy artifacts establish.The generated Markdown is controlled legacy evidence. It is not an approved requirement, a target design, a feasibility assessment, or authorization to generate code.
Use one human-facing global identifier for the module evidence package:
MOD-<MODULE-ID>Use qualified semantic local keys only where they materially improve navigation or later traceability:
MOD-<MODULE-ID>#section.<slug>
MOD-<MODULE-ID>#tab.<slug>
MOD-<MODULE-ID>#grid.<slug>
MOD-<MODULE-ID>#operation.<slug>
MOD-<MODULE-ID>#rule.<slug>Do not create human-facing IDs for every field, message, branch, SQL statement, source file, test scenario, or database column. Use natural legacy locators such as BLOCK.ITEM, trigger or routine names, database object names, message codes, and source file/line locators.
The compiler may retain deterministic SRC-*, FACT-*, PATH-*, and GAP-* keys inside transient validation evidence. Those are machine reconciliation keys, not governed requirement IDs and need not be shown as the primary identity of each document row.
Resolve the project repository as:
agentic-sdlc-data/tenants/<tenant>/projects/<project>/repoVerify project.yaml exists and declares objective_type: legacy_modernization. Keep all generated artifacts inside the selected project repository and preserve uploads in place.
Create one linked, lossless evidence package per module under a semantic feature folder:
evidence/features/<feature-slug>/
<module-id>-<screen-title>-specification.md
<module-id>-operation-details.md
<module-id>-decoded-source.md
<module-id>-database-reference.mdDerive <feature-slug> from the business screen title, not from the action used to open the legacy form. Conservatively remove a leading action/navigation verb such as maintain, retrieve, view, or manage only when the remaining subject is unambiguous. For example, Maintain Standard Contract becomes standard-contract. Honor an explicit feature-folder override in run Notes. Keep the module ID in every filename to avoid collisions.
The master specification must implement all 22 numbered sections and Appendices A-J in references/specification-template.md. Child documents are controlled parts of the same evidence package, not optional supplements. Every child must declare the same module ID, module evidence ID, extraction run ID, and evidence fingerprint as the master and link back to it. The master must link to every child with relative Markdown links.
Package responsibilities:
Completeness is package-wide. Moving evidence to a child is allowed only when the master retains a useful summary and direct link and the guard proves the exhaustive record exists in the child. Never create an unlinked companion file.
The durable document must contain:
BLOCK.ITEM locator for every Forms item;TABLE.COLUMN (PHYSICAL_DDL_TYPE);ON DELETE behavior, and whether a decoded Forms delete path checks the dependency;Never emit [truncated], +N more, or another lossy placeholder for source-backed durable evidence. Split high-cardinality evidence into rows or collapsible source sections instead.
Readability and deduplication rules:
Applies during | Business condition | Message code | Message text | Effect | Association basis | Source. Associate a message with a condition only when it occurs inside the active decoded IF/ELSIF branch in the same unit, or another equally explicit control-flow relation proves the binding. Preserve unbound messages explicitly. Never repeat a path-wide message or stop-effect collection for every branch.Read before running or changing the workflow:
references/normalized-evidence-contract.mdreferences/specialist-agent-contracts.mdreferences/completeness-readiness-staleness-gates.mdreferences/module-archetype-lenses.mdreferences/oracle-analysis-rules.mdreferences/specification-template.mdAccept a complete source bundle or a supplemental upload. Folder names are case-insensitive. Recurse through every descendant.
<input>/
form/
ddl/
ui/Classify files by extension, content, attached-library declarations, module naming, existing gaps, and the explicit module filter. Ignore unrelated modules except where a selected-module call or dependency makes the artifact relevant.
fresh: generate the complete evidence specification from the selected bundle. When prior specifications are supplied or auto-discovered, use all of them only as comparison oracles for source-supported legacy anchors.refresh: rerun the complete selected bundle and replace paired oracle-evidence regions in a marker-enabled evidence specification. Preserve human review notes outside generated regions, but never preserve target proposals as if they were extracted facts.audit-only: analyze coverage and falsification without writing a specification.If an older specification contains target proposals, POC assumptions, target tests, or implementation decisions, exclude those concepts from the new evidence specification. Preserve only details independently supported by the current source bundle.
Resolve tenant, project, project repository, selected module, source paths, output path, and run mode. Refuse to overwrite an approved or baselined artifact. Never broaden the run to every module just because the bundle contains multiple modules.
Run the recursive inventory:
python <skill-dir>\scripts\oracle_spec_inventory.py <input> --module <module-id> --output <temp-manifest>Every supplied file must have a hash, role, module association, readability, and parse disposition. Repeatedly decode Forms XML text until stable. Record exact parse or acquisition gaps when extraction remains incomplete.
Use a uniquely named operating-system temporary directory for validation evidence:
python <skill-dir>\scripts\oracle_module_evidence.py <input> --module <module-id> --markdown-output <project-repo>\evidence\features\<feature-slug>\<candidate-spec> --validation-evidence-output <temp-dir>\evidence-model.json --extraction-mode fresh --self-checkAdd --comparison-spec <prior-spec> when a specific older specification should be checked for source-supported legacy anchors. In fresh mode, when no explicit comparison is given, the compiler checks previous_<output-name>.md, the same-named flat historical specification when the new output is nested, and every adjacent <output-stem>_v*.md file it finds. For a nested feature package it also checks the parent evidence/features/ folder so the current flat specification and older v0/v1 files remain continuity oracles. Use --previous-spec <current-spec> --extraction-mode refresh only for a marker-enabled current evidence draft.
The compiler must not stop merely because a companion library, called module, DDL object, message catalogue, or screenshot is absent. It must stop when the input cannot be read safely or the selected module cannot be associated.
Apply these evidence-only lenses independently:
Reconcile supported findings by source locator. Preserve conflicts and unknowns. Specialists must not invent target treatment or edit the controlled specification directly.
Inspect every image under the input bundle. Score association using:
Attach every plausible match, not only the highest-scoring image. For each candidate record the association basis and confidence. Use a relative Azure Wiki-compatible image link from the specification to the preserved upload, URL-encoding spaces and other unsafe path characters:
Do not copy, rename, or delete the uploaded image merely to make the link convenient. A screenshot supports visible grouping, labels, and layout; it does not override Forms XML, PL/SQL, DDL, or runtime evidence.
When comparing against an older specification:
BLOCK.ITEM, trigger/routine names, Forms properties, message codes, database objects, and source filenames.CHG-*, FR-*, FLD-*, BR-*, MSG-*, TC-*, OQ-*, assumptions, target treatments, or POC decisions merely because they were present before.Run:
python <skill-dir>\scripts\oracle_module_evidence.py <input> --module <module-id> --markdown-output <project-repo>\evidence\features\<feature-slug>\<candidate-spec> --validation-evidence-output <temp-dir>\evidence-model.json --comparison-spec <prior-spec-if-used> --extraction-mode fresh --self-check
python <skill-dir>\scripts\oracle_spec_guard.py --evidence <temp-dir>\evidence-model.json --spec <candidate-spec> --output <temp-dir>\specification-validation.json
git diff --check -- <changed-paths>Validation must fail for missing template sections or markers, a missing/broken/mismatched package child, any [truncated] marker, an omitted complete operation or DDL record, an omitted Forms item, missing typed DDL mapping, missing window/canvas/tab definition, incomplete inbound-FK coverage, absent exact decoded unit source, missing visible region/tab/grid membership, absent operation paths or material gaps, unaccounted supplied sources, oversized Section 6/12 rows, path-wide message repetition, a stale fingerprint, broken screenshot or child links, unsupported limiting claims, or loss of a current-source-supported comparison anchor or source statement.
Precisely registered open gaps do not make extraction fail. They make the evidence incomplete in the named dimensions.
evidence/uploads/.evidence/features/<feature-slug>/.requirements/, architecture/, or tests/.a49a39f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.