project-specs-reconciliation
Create or update conventional project PRD and ADR documentation before implementation. Use when Codex needs to reconcile requested behavior, requirements, acceptance criteria, architecture decisions, technical tradeoffs, or implementation constraints into Product Requirements Documents under docs/PRD or a user-provided scoped PRD directory and Architectural Decision Reports under docs/ADR or a user-provided scoped ADR directory. This skill is responsible for project specification documentation and hands off code execution to project-specs-implementation.
What this skill does
# Project Specs Reconciliation Use this skill to turn a requested project change into durable project documentation before implementation begins. Create or update PRDs for product behavior and ADRs for architectural decisions. Do not implement application code under this skill. End with a handoff for `project-specs-implementation` or another local BDD/TDD implementation workflow. ## Composition With Implementation Use this skill for the governance red phase: establish or repair the PRD, ADR, matrix, and implementation handoff before production-code changes. Use `project-specs-implementation` for the implementation red, green, refactor, and verification phases after this skill produces a complete handoff. If implementation work exposes missing or contradictory requirements, return to this skill before continuing code changes. ## Template Assets Use these bundled templates when creating new specifications: ```text assets/prd-template.md assets/adr-template.md ``` Copy the relevant template, replace the number and title, and fill every section with project-specific content. Do not leave template placeholder prose in generated PRDs or ADRs. ## Conventional Locations Use these locations without broad discovery: ```text docs/PRD/ docs/ADR/ ``` When the user provides an explicit scope, use: ```text docs/<scope>/PRD/ docs/<scope>/ADR/ ``` Use these conventional files when present or needed: ```text docs/PRD/README.md docs/PRD/MATRIX.md docs/ADR/README.md ``` For scoped projects, place the same files below `docs/<scope>/PRD/` and `docs/<scope>/ADR/`. Do not infer alternate spec locations by searching the repository. If the expected conventional directory is absent, create it when a new PRD or ADR is needed. ## Stage 1: Classify Intent ### Step 1: Restate the requested change Restate the user's intent as a concise behavior or decision statement. ### Step 2: Choose PRD, ADR, or both Use a PRD when the change affects: - externally observable behavior - user workflows - product requirements - CLI, API, UI, or integration outcomes - acceptance criteria - behavioral compatibility Use an ADR when the change records: - a durable architecture decision - system boundaries - dependency or framework choices - execution model changes - data ownership or persistence strategy - security, reliability, or operational tradeoffs - constraints that future implementation must preserve Use both when an architecture decision changes product behavior. In that case, create or update the ADR first, then create or update the PRD with behavioral consequences and acceptance criteria. ### Step 3: State the classification Before editing files, state: - whether the work is PRD-only, ADR-only, or both - the conventional directory that will be used - whether the change updates an existing spec or creates a new one ## Stage 2: Select the Spec Path ### Step 1: Resolve the base directory Use `docs/PRD/` and `docs/ADR/` unless the user gives an explicit scope. If the user gives `payments` as the scope, use `docs/payments/PRD/` and `docs/payments/ADR/`. ### Step 2: Read only conventional indexes and candidate specs Read the relevant `README.md` index in the selected conventional directory when it exists. Read candidate PRDs or ADRs in that same directory when deciding whether an existing durable owner already exists. ### Step 3: Decide update versus create Update an existing spec when its concern boundary already owns the behavior or decision. Create a new spec only when no existing spec in the conventional location owns the requested concern. ### Step 4: Choose the next number For a new PRD, use: ```text PRD-<4-digit>-<slug>-specification.md ``` For a new ADR, use: ```text ADR-<4-digit>-<slug>.md ``` Choose the next number from the selected conventional directory or from explicit numbering guidance in the local index. ## Stage 3: Create or Update PRDs Use this stage for product behavior, requirements, acceptance criteria, and user-observable outcomes. ### Step 1: Preserve the owning concern boundary Keep each PRD focused on one stable product, subsystem, feature-family, or mechanism boundary. Reference another PRD instead of duplicating acceptance criteria when another PRD already owns the behavior. ### Step 2: Use the PRD template For new PRDs, copy `assets/prd-template.md` and fill it in. The template defines this required structure: ```markdown # PRD-0000: Title Specification ## Status Draft ## Context ## Goals ## Non-Goals ## Contract ## Deferred Scope ## Acceptance Scenarios ``` Adapt headings only when the repository already has a stricter local PRD template in the conventional directory. ### Step 3: Write external behavior Write behavior as observable outcomes, not implementation detail. Prefer concrete inputs, user actions, system responses, persistence outcomes, compatibility guarantees, and failure modes. ### Step 4: Maintain acceptance scenarios Use scenario IDs in this form: ```text SCN-0000 ``` Increment scenario IDs within the PRD. Preserve existing IDs when updating behavior unless a deliberate migration is documented. Use this scenario shape: ```markdown ### Scenario SCN-0000: Observable behavior title Given ... When ... Then ... ``` Keep scenario titles stable when behavior is unchanged. ### Step 5: Mark intentionally deferred behavior Record visible but intentionally unimplemented behavior under `Deferred Scope` instead of silently expanding the contract. ## Stage 4: Create or Update ADRs Use this stage for architectural decisions, durable tradeoffs, and implementation constraints. ### Step 1: Capture the decision, not just the result Explain why the decision is durable and what tradeoffs it creates. Do not use an ADR as a generic implementation note. ### Step 2: Use the ADR template For new ADRs, copy `assets/adr-template.md` and fill it in. The template defines this required structure: ```markdown # ADR-0000: Decision Title ## Status Proposed ## Context ## Decision ## Consequences ## Alternatives Considered ## Related Specifications ``` Adapt headings only when the repository already has a stricter local ADR template in the conventional directory. ### Step 3: Link behavior when needed When the decision changes product behavior, link the related PRD under `Related Specifications` and ensure the PRD captures the observable contract. ### Step 4: Record constraints for implementation Make constraints explicit enough for implementation work to preserve them, including boundaries, dependency choices, data ownership, failure handling, operational requirements, or compatibility expectations. ## Stage 5: Update Indexes and Traceability ### Step 1: Update PRD and ADR indexes Update `README.md` in the touched conventional PRD or ADR directory when it exists or when creating the first spec in that directory. For PRD indexes, include the current PRDs and any numbering guidance needed for future additions. For ADR indexes, include the current ADRs and the next ADR number when helpful. ### Step 2: Update a traceability matrix only when present If `MATRIX.md` already exists in the selected PRD directory, update it for new or changed PRD acceptance scenarios. Do not create a matrix unless the user asks for one or the repository already uses it in that conventional directory. ### Step 3: Keep traceability mechanical When a matrix exists, keep scenario IDs, PRD scenario titles, and mapped executable scenario titles aligned as tightly as the project permits. Document any intentional mismatch in the matrix notes. ## Stage 6: Validate and Handoff ### Step 1: Run documented spec validation first If the touched conventional directory documents a validation command, run it. Treat failures as blockers unless the user explicitly asks for a partial draft. ### Step 2: Perform structural validation When no validator exists, check: - filenames match the required PRD or ADR pattern - indexes include ne
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.