Curate an Oracle Forms modernization feature by reconciling extracted Oracle evidence, linked screenshots, a running target mockup, its Next.js implementation, existing canonical requirements, and accepted target architecture. Use when a target mockup must be converted or incrementally enriched into a review-ready feature requirement package plus an evidence-backed server-side implementation specification covering UI-to-data mappings, LOVs, validations, detailed decision rows for Delete, Add, Edit, and other operations, Oracle-constraint-to-application-message translations, transactions, tab dependencies, APIs, errors, security, and acceptance scenarios without inventing unsupported physical mappings.
57
65%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.codex/skills/leg-curate-requirements-oracle/SKILL.mdCreate two linked, controlled artifacts for one target feature:
requirements/features/;architecture/target-to-be/.Specialize the behavior of ../leg-curate-requirements/SKILL.md. Follow the repository AGENTS.md and CANONICAL_MODEL.md. Keep requirement intent separate from tables, columns, procedures, endpoints, and transaction design.
| Input | Required | Default | Meaning |
|---|---|---|---|
Tenant | No | default | Agentic SDLC tenant key. |
Project | No | gala | Agentic SDLC project key. This specialized skill overrides the workspace-wide manual default. |
Project repo | No | auto | Explicit project repository path or automatic resolution. |
feature_name | Yes | None | Target feature slug, such as standard-contract. |
module_names | Yes | None | One or more Oracle evidence module folder names, separated by commas. |
mockup_url | Yes | None | Running URL for the target-state mockup. |
project_directory | No | C:\workspace\replatform\GALA\galanext | Next.js project containing the mockup. |
overwrite | No | false | Replacement mode for the matching module artifacts. Only an explicit true permits controlled replacement; every other run is incremental. |
Notes | No | None | Run-specific scope, authority, decisions, restrictions, and output guidance. |
Stop and request any missing required input. When Project is omitted, state that this Oracle specialization defaults to gala. Split comma-separated module names, trim whitespace, remove empty values, and de-duplicate while preserving input order.
Accept overwrite only as true or false, case-insensitively. Treat an omitted value as false; request correction for any other value. Report the selected run mode before writing.
Resolve exactly one project repository:
agentic-sdlc-data/tenants/<tenant>/projects/<project>/repoVerify the repository and project.yaml exist. Require objective_type: legacy_modernization unless Notes explicitly authorize a compatible legacy-modernization run. Read TAXONOMY.md, ROLES.md, existing requirements, review state, traceability, and applicable architecture before writing.
Resolve project_directory to an existing Next.js project. Treat the project repository as controlled evidence and the Next.js directory as read-only target implementation input. Never modify mockup application code in this workflow.
Resolve every requested module beneath:
<project-repo>/evidence/features/<module-name>/Treat this direct feature folder as the only normal module evidence root. Do not search or consume evidence/features/oracle-modules/; it contains extraction-run details rather than the curated module evidence for this workflow. Use it only when Notes explicitly opt in to a named artifact there.
Apply this matching order:
Report every requested-to-resolved mapping. Never omit an unresolved module silently.
Read the relevant subset of these sources:
project.yaml, TAXONOMY.md, ROLES.md, and existing canonical requirements;*-operation-details.md or equivalent exhaustive operation-evidence artifact in each resolved feature folder, including the complete records for applicable operations rather than only summary links;ON-ERROR, constraint-checking, message-push, RAISE_APPLICATION_ERROR, and equivalent exception handlers;GLA-* to final user-facing text and substitution parameters;architecture/decisions/ and architecture/target-to-be/ artifacts;project_directory;Follow relative evidence links and inspect linked screenshots at readable resolution. Record unreadable files, broken links, inaccessible mockup states, and missing source exports as evidence gaps.
When an exhaustive operation-evidence artifact exists, treat each ## <operation type> - <entry point> record and its declared calls, database reads, writes/effects, dependency checks, messages, stop effects, outcomes, side effects, and transaction behavior as the operation inventory. Use its record counts as reconciliation controls, follow its source locators into decoded source when predicate or bind detail is needed, and apply any semantic-review overlay that explicitly resolves an extraction ambiguity. Do not curate from the shorter operation summary alone.
Use sources according to responsibility:
Where the mockup does not specify a control's detailed behavior, use Oracle evidence for the legacy behavior and make any target change explicit. Do not treat mock data, UI labels, TypeScript property names, or screenshot values as proof of physical database behavior. Do not state a table, column, data type, default, validation, procedure, endpoint, authorization rule, or transaction sequence as fact without Oracle evidence or an accepted decision.
Classify unsupported or conflicting claims as TBD, assumptions, open questions, review findings, or architecture open questions. Include evidence locator and confidence for every physical mapping.
Build a complete target UI inventory containing:
Build a corresponding Oracle inventory containing:
Reconcile related modules into one feature model. Merge only proven duplicates. Preserve conflicting or module-specific behavior until evidence or a controlled decision resolves it.
Treat legacy error translation as a two-stage contract, not as an incidental exception string:
Oracle constraint/error signature -> legacy application message code -> user-facing message/templateInventory schema-qualified and unqualified constraint forms as one semantic mapping. Preserve exact application codes, message parameters, and handler precedence. A known first-stage mapping with an unavailable message-catalogue text is partial evidence: retain the code, mark the final text TBD, and link one consolidated gap rather than replacing it with a generic constraint message.
Create a coverage matrix for every target UI element using exactly one disposition:
verified: directly supported by evidence or an accepted decision;inferred: supported by multiple consistent clues but not directly proven;conflict: sources disagree materially;TBD: required information is absent;not-applicable: intentionally has no backend behavior, with rationale.Do not draft final artifacts while an inventory row lacks a disposition. A material inferred, conflict, or TBD row must also reference one entry in the consolidated implementation gap register.
Put business purpose, target behavior, rules, outcomes, acceptance behavior, origin, and change intent in the feature requirement package. Use stable semantic local keys and canonical metadata.
Put physical mappings, APIs, service allocation, schemas, procedures, transaction design, persistence sequencing, concurrency, security implementation, observability, and performance design in the target implementation specification.
Reference requirement behavior from the implementation specification as:
<PACKAGE-ID>#<local-key>Use exactly one global governed package ID for the module: the feature requirement package ID. The implementation specification carries that value as governed_package_id and has no second global design ID. Controls, fields, rules, actions, scenarios, gaps, and other internal content use stable semantic local keys qualified as <PACKAGE-ID>#<local-key> only when referenced outside the package.
Do not duplicate the full physical design into requirements. Do not invent global IDs for every control, column, procedure, endpoint, acceptance criterion, gap, or scenario.
Retain the existing action contracts and CRUD completeness table as readable summaries. In addition, create one Operation Decision Tables section in the implementation specification. It contains the implementation-significant detail for all applicable operations in the feature, not only Delete.
Treat an operation as requiring detailed rows when its evidence contains one or more validations, branches, confirmations, warnings, database reads, DML statements, procedure/function calls, state transitions, transaction effects, navigation effects, or exception paths. Examples include Add, Edit, Save/Submit, Delete, Search, Clear/Cancel, LOV selection, child-row actions, tab actions, approvals, copies, calculations, and module-specific buttons or key triggers.
For each such operation:
hard_blocker or warning_confirmation; otherwise use a concise decision kind such as query, DML, call, state-transition, or exception.Use stable local keys such as operation.delete.precheck.child-exists or operation.save.insert.allocate-contract-id. Prefer semantic suffixes; use hard-01 or warning-01 only when evidence supplies no stable semantic name. These are package-local keys, not new global IDs or trace records.
Do not replace evidenced detail with a count or narrative summary. If evidence states that an operation has 39 hard checks and 15 warnings, represent all 54 rows. When only 53 can be resolved, add the missing row as TBD with a consolidated gap key and identify the expected count mismatch. Preserve separately ordered rows even when they reference the same Oracle object or message.
For a genuinely simple operation, include one row describing its complete behavior. If the feature has no material operations, include one not-applicable row with evidence or decision rationale. Never fabricate Delete, Add, Edit, or other operations that neither the mockup nor controlled target scope contains.
Create one local Oracle Constraint And Error Translation table in the implementation specification. Use stable semantic keys such as error.constraint.scp-uk1; these are package-local keys, not new global identifiers.
Cover every failure reachable from an in-scope query or mutation, including:
Reconcile three counts where the evidence permits: in-scope physical/application failure signatures, signatures with a legacy application-code mapping, and mappings with final message text. Represent every uncovered item as a TBD row or partial row with one consolidated gap key. Do not silently convert a known constraint into a generic error and do not invent message-catalogue text.
The table must be directly implementable as one centralized translator. It must distinguish at least code, user-safe message, normalized constraint when applicable, and responsible local target; retain diagnostic detail server-side without exposing unsafe SQL or bind values. Specify a safe unknown-error fallback, but never use it for a fully or partially known mapping when the known application code can be preserved.
Reference applicable error.* mapping keys from validation, action, operation-decision, API, and acceptance rows so the implementation path cannot lose the curated translation layer.
Use references/specification-template.md for exact artifact shapes and tables.
Ensure the feature requirement package covers:
Ensure the target implementation specification covers:
Mention stored procedures or functions only when supported by source evidence or an accepted decision. Represent absent physical knowledge as TBD; do not fill gaps with plausible names.
Read the existing matching feature package, implementation specification, review records, trace links, indexes, change logs, and workflow state before drafting any change.
The default mode is incremental (overwrite: false or omitted):
error.* key and normalized failure signature, enriching first-stage constraint-to-code mappings with message-catalogue text when later evidence supplies it;conflict, and add or update one consolidated gap until a controlled decision resolves it;overwrite: true enables controlled replacement only for the exact matching feature package and implementation specification. In this mode, regenerate their evidence-derived bodies from the complete current source set while preserving the governed package ID, controlled path and filename where possible, provenance, governance metadata, and prior change history. It does not authorize deletion or replacement of unrelated artifacts. It also does not override reviewed, approved, baselined, retired, or locked content; replacing such content still requires explicit controlled migration instructions in Notes.
In either mode, never discard content produced by an earlier skill version without recording why it was superseded. After the merge or replacement, rerun complete coverage and validation against the resulting whole artifacts, not only the newly added rows.
Derive and record both outcomes; do not use them as a hard stop for a controlled POC:
review_ready: the package is structurally complete and has no unresolved material gaps;reviewable_with_gaps: the package is structurally complete and every unresolved point is consolidated for review;not_review_ready: the package is structurally incomplete or hides unresolved material content;implementation_ready: no unresolved implementation-impacting gaps remain;implementation_ready_with_known_gaps: only medium/low gaps remain and their likely code impact and POC fallback are explicit;not_implementation_ready: at least one unresolved blocker or high gap can materially omit or corrupt behavior, persistence, security, or transactions.Code generation posture is allowed when implementation-ready and allowed_with_known_gaps otherwise. Never label code generation prohibited. For allowed_with_known_gaps, state that generated code is POC-only, enumerate likely omissions or defects, and require the implementer to carry the gap keys into its completion report.
Gap severity means:
blocker: a safe or coherent behavior cannot be specified; generated code needs an explicit incomplete/stub path;high: generated code may implement wrong data, business, transaction, authorization, or destructive behavior;medium: generated code may omit an edge case, error path, dependency, or non-happy behavior;low: generated code may differ in minor UX, operational, or non-critical behavior.An unresolved claim is acceptable only when it is explicit. Every material blank, TBD, conflict, or inferred contract row must reference a local gap key in the single consolidated register. Do not repeat separate open-question and risk registers in the implementation specification.
Determine the controlled taxonomy path from TAXONOMY.md, existing feature artifacts, and canonical indexes. Do not invent an ad hoc taxonomy folder. If the feature cannot be placed unambiguously, request clarification before creating canonical files.
Create or update idempotently:
requirements/features/<controlled-taxonomy-path>/<feature_name>.md
architecture/target-to-be/<controlled-taxonomy-path>/<feature_name>-implementation-spec.md
review/findings.md # when material findings exist
review/open-decisions.md # when decisions are required
traceability/links.jsonl # minimal package-level links
traceability/gaps.md # when material gaps exist
requirements/index.yaml and index.md # governed package only
requirements/requirements-change-log.* # one semantic package change
work/current-workflow.md # run state and next actionPreserve existing stable IDs, filenames, human edits, review history, trace links, and baseline status. In incremental mode, update matching draft artifacts by semantic merge rather than duplicating or replacing them. In overwrite mode, replace only the matching eligible draft artifacts under the rules above. Never remove or rewrite reviewed, approved, baselined, retired, or locked content without explicit controlled migration instructions. Never mark an artifact approved or baselined.
overwrite; report incremental or overwrite mode.Resolve the skill directory first, then run its bundled validator:
python <skill-directory>\scripts\validate_specification.py `
--requirement <feature-requirement-path> `
--implementation <implementation-specification-path> `
--require-operation-decisions `
--require-error-translationsAlso run:
git diff --check -- requirements architecture review traceability workThe validator distinguishes malformed or internally inconsistent specifications from declared evidence gaps. Structural errors fail validation. Properly registered unresolved gaps produce readiness findings and warnings but do not fail the command, so a controlled POC may continue with allowed_with_known_gaps.
Verify where applicable:
not-applicable rationale, or a linked consolidated gap;TBD, conflict, and inferred value is represented once in the consolidated gap register;Continue correcting artifacts until all checks pass or a specific evidence or decision blocker remains.
Report:
incremental or explicit overwrite) and the existing artifacts preserved, enriched, or replaced;verified, inferred, conflict, TBD, and not-applicable;review_readiness, implementation_readiness, and code_generation_posture;Do not create commits, tags, pushes, baselines, approvals, deployments, or application-code changes unless explicitly requested by a separate user instruction.
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.