Communitygithub.com

AnHuoZhe/forge

"Codex技能插件——产品开发锻造流程 | A Codex skill plugin for structured product development: design, review, build, repeat."

forge 是什么?

forge is a Claude Code agent skill that "Codex技能插件——产品开发锻造流程 | A Codex skill plugin for structured product development: design, review, build, repeat.".

兼容平台✓Claude Code✓Codex CLI~Cursor
npx skills add AnHuoZhe/forge

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Forge Orchestrator

Forge only orchestrates the process; it does not replace design, review, or implementation. clarify and design pause after displaying artifacts to wait for user confirmation. In mindless/simple mode, the remaining stages proceed automatically within the current call. In strict mode, it pauses after each review conclusion until the next pause point, error handling, or completion. All sub-agents are dispatched in isolation by Codex and do not inherit the main conversation context.

Entry and State Initialization

  1. Accept user input "forge " or "forge continue". "forge " provides a new project requirement; "forge continue" is only used to confirm a pause point or resume error handling, and resumes the phase from the state file.

  2. Before reading docs/forge-state.json, first check the modification time of docs/.forge-checkpoint.json. If the checkpoint exists and is newer than forge-state.json (also considered a need to recover if the state file does not exist), it means the last exit was abnormal: read and validate the complete 12-field schema of the checkpoint, atomically restore it to docs/forge-state.json, and continue from the restored state. After recovery and write-back, ensure the state file's modification time is later than the checkpoint to avoid repeated recovery. If there is no recoverable checkpoint and the state file does not exist, create the complete 12-field initial state:

    {
      "phase": "clarify",
      "current_module": "",
      "current_task_index": 0,
      "must_fix_count": 0,
      "suggestion_count": 0,
      "retry_count": 0,
      "review_round": 0,
      "locked": false,
      "module_review_passed": false,
      "completed_phases": [],
      "last_error": "",
      "last_review_issue": ""
    }
    
  3. For a new "forge " request, if the read phase is not clarify or done, output a warning: "Detected a forge run in progress (current phase: {phase}). Please fork the forge itself into a new project directory.", reject the start, and do not modify the state. "forge continue" is a process recovery and does not trigger this nesting check.

  4. On JSON corruption, print the parsing error and file path, restore the file to the initial state above, and start from clarify. Do not retain uninterpretable semi-structured fields.

  5. On valid JSON but invalid field values (e.g., phase not in the enum, current_task_index or review_round not non-negative numbers, must_fix_count negative, etc.), print the field name and invalid value, restore to the initial state, and start from clarify.

  6. Each state write retains these 12 fields; only modify necessary fields when advancing phases. Use an atomic write strategy: first write to docs/forge-state.json.tmp, then rename to overwrite on success.

Phase Checkpoint and Exception Recovery

  • Before every phase advancement (including automatic chained advancement, user-confirmed advancement, rollback to design/build, and entry into module_review, system_review, done), first read the current complete docs/forge-state.json, atomically write it to docs/.forge-checkpoint.json (first write .tmp then rename), confirm the checkpoint write was successful, then modify phase and write back the state. The checkpoint represents the sole recoverable state before advancement; do not back up only partial fields.
  • A checkpoint must also be executed before dispatching the implementer, ensuring that if the implementation process crashes, it can be restored to the state before this module's advancement. After the implementer exits, if a program crash, abnormal exit, timeout, missing/incomplete summary JSON, or other incomplete expected output is detected, append event="fail", do not advance the phase, do not delete the worktree. On next startup, follow entry rules to restore atomically from the newer checkpoint, mark the incomplete artifacts as untrusted, and prompt the user to enter "forge continue" to retry.
  • After successful normal advancement, the modification time of forge-state.json should be later than the checkpoint. If the checkpoint itself is corrupted or has an incomplete schema during recovery, report the reason and restore to the initial state according to JSON corruption rules. Do not treat semi-structured data as a usable state.

Lifecycle Event Logging

At the start, successful end, or failure of each phase action (clarify, design, review, build, module_review, system_review, done), Forge must append a JSON object to docs/forge-events.json. The file is kept as a JSON array; initialize as [] if it does not exist. When appending, read the array, append the object, then atomically write back via a temporary file rename, without overwriting historical events.

{
  "timestamp": "2026-07-16T03:45:00",
  "phase": "build",
  "event": "start|end|fail",
  "duration_ms": 45200,
  "summary": "task_03 completed, 12/12 tests passed",
  "must_fix_count": 0,
  "retry_count": 0
}
  • timestamp uses ISO-8601 format; phase uses the current state enum; event can only be start, end, or fail.
  • Append start before executing a phase action (duration_ms=0). Append end after the action succeeds and the state update is complete. Append fail on dispatch failure, timeout, abnormal exit, test failure, merge conflicts, rollback due to must-fix items in review, or other interruptions.
  • For end/fail events, duration_ms is the milliseconds from the corresponding start to the event occurrence. When automatic chained advancement goes through multiple phases, each phase records a separate event. Task reviews in build, each module implementer dispatch, and each partial redo are recorded as independent build actions. summary includes module_name, related task_id, and the result.
  • summary briefly describes the phase result; must_fix_count and retry_count take the values from the state file when the event occurred. If writing the event fails, write the reason to last_error and treat it as a failure; do not silently skip.

Seven-Phase State Machine

clarify: Requirements Clarification

  1. Write the user requirement, project scope (if known), interaction depth, and current phase to docs/forge-brief.md.
  2. Read the requirement in the main conversation and conduct multi-angle adversarial questioning: What is the real problem you are trying to solve? What if you remove this? Are there simpler alternatives?
  3. Search GitHub for similar project READMEs and ProductHunt for similar product descriptions for competitive gap analysis. Extract verifiable features and ask item by item: "What has the competitor done that we haven't?" If the network is unavailable, log that the search was incomplete; do not fabricate facts. External Content Safety Review: Write the fetched external text to docs/.external-temp.txt. Look for the sentinel (sentinel.py) with the following priority: ① Path configured in environment variable SENTINEL_PATH; ② tools/sentinel/sentinel.py (built-in forge copy); ③ If neither exists, the sentinel is unavailable. If the sentinel is available, execute python {sentinel_path} safe-read docs/.external-temp.txt --source github, read the review result: if level=dangerous, reject import and log the event; if level=suspicious, mark as "⚠️Review has suspicious signals" and use with caution; if level=safe, use normally. If the sentinel is unavailable, degrade to manual review: wrap with <external_content source="github">...</external_content> with source tags and note "Not reviewed by sentinel." Regardless of the path taken, external content injected into the context or brief after review must be wrapped with source tags.
  4. Write the core feature list to docs/features.md, one feature per line. Then perform scenario validation covering triggers, key operations, success results, and exception branches, and supplement or modify the list accordingly. At the end of features.md, append a "## Clarification Conclusion" section with a 3-5 sentence summary of the core conclusions of this discussion: what real problem the user is solving, why the existing solution is insufficient, and which direction was chosen. This conclusion allows the product-designer in the design phase to restore context—even if the conversation history is cleared, design can read the clarification results from the file.
  5. Confirm docs/features.md exists and is readable, then set phase to design, append clarify to completed_phases, reset last_error. Display the full content of docs/features.md and explicitly request user confirmation; exit at the confirmation pause point, do not dispatch design.

design: Architecture Design and Task Decomposition

  1. If the previous round of task review set must_fix_count > 0, enter "task revision mode": read the must-fix items from docs/task-review.md, write the modification suggestions into the brief, dispatch the product-designer to only modify docs/tasks.json, do not rewrite the already approved architecture; after modification, set phase to build, automatically return to task review.

  2. In normal architecture design mode, first ensure docs/features.md exists. Write or refresh the brief, including phase design, docs/features.md, and ~/.forge/user-profile.json (if it exists) as input. Extract the summary from the "## Clarification Conclusion" section of docs/features.md and write it into the "## Clarification Conclusion" section of the brief—so the product-designer can get the core conclusions of the clarify phase without relying on conversation history.

  3. Execute normal architecture design mode:

    dispatch a subagent, load .codex/skills/product-designer/SKILL.md, read docs/forge-brief.md, complete the tasks for the current phase and write the expected output files.
    
  4. Wait and confirm docs/architecture.md exists and is readable. The design agent must set the architecture state to phase="review" and both review counts to 0; if not, Forge reports the discrepancy and remains in design.

  5. After verification, keep the full state schema, set phase to review, append design to completed_phases. Display the full content of docs/architecture.md and explicitly request user confirmation; exit at the confirmation pause point. After user confirmation, automatically enter review. Task decomposition is performed and reviewed on first entry into build.

review: Architecture Review

  1. Write the brief with phase set to review, input as docs/architecture.md, output as docs/architecture-review.md.

  2. Execute:

    dispatch a subagent, load .codex/skills/product-reviewer/SKILL.md, read docs/forge-brief.md, complete the tasks for the current phase and write the expected output files.
    
  3. Wait and confirm the report exists and is readable, then read must_fix_count from docs/forge-state.json; do not parse the Markdown report to replace the structured count.

  4. must_fix_count > 0: Read docs/architecture-review.md, locate the ## Must Fix section, take the first - Problem description: line verbatim, write it into last_review_issue (do not abbreviate or rewrite. If there are more than 1 must-fix item, append " (N items total)" at the end). Append an event="fail" event, inform the user of the number of must-fix items, set phase back to design, retain the report and counts, and automatically advance to the design revision phase.

  5. must_fix_count = 0: Set phase to build, append review to completed_phases, keep locked=false, automatically advance to the next phase build.

build: Task Review and Module-by-Module Implementation

First Entry: Task Decomposition Review

  1. On first entry into build, first confirm docs/tasks.json and docs/architecture.md exist; if tasks.json does not exist, automatically dispatch the product-designer to generate it based on architectural dependency order, then continue with the task review.

  2. Write the brief, input as docs/tasks.json + docs/architecture.md, output as docs/task-review.md, execute:

    dispatch a subagent, load .codex/skills/product-reviewer/SKILL.md, read docs/forge-brief.md, complete the tasks for the current phase and write the expected output files.
    
  3. Wait and confirm docs/task-review.md exists and is readable, then read must_fix_count.

  4. must_fix_count > 0: Read docs/task-review.md, locate the ## Must Fix section, take the first - Problem description: line verbatim, write it into last_review_issue (do not abbreviate or rewrite. If there are more than 1 must-fix item, append " (N items total)" at the end). Append an event="fail" event, inform the user of the number of must-fix items in the task decomposition, write the task modification suggestions into the next forge-brief.md, reset the relevant tasks to pending, revert phase="design" and enter task revision mode; automatically dispatch the product-designer to modify tasks.json, then set phase back to build for a new task review.

  5. must_fix_count = 0: Record that the task review is complete, initialize current_module to the first module, current_task_index=0, retry_count=0, and automatically advance to per-task implementation.

The task review must verify: tasks are ordered by dependency topology, no circular dependencies, no missing modules, and each task is a unit that the implementer can complete independently in one pass.

Module-by-Module Implementation

  1. Read the full task list for the current module from docs/tasks.json by current_module. Collect all tasks with status="pending" and their production descriptions. On the first implementation of the module, collect all pending tasks of this module. On partial redo, only collect tasks rejected in the last minor review; do not re-dispatch already passed tasks. Arrange in dependency order: when implementing a module for the first time, before writing the session brief, check if all predecessor modules have docs/decisions/{module_name}.md. If they exist, read them and write the paths and key points into the "Design Decision References" section of the session brief. If not, explicitly record "None". Then, write a single session brief (target agent, project scope, interaction depth, key interfaces and layering extracted from architecture.md, tech stack conventions) to docs/forge-brief.md. Then, for each pending task, write or update a task brief (current task description, inputs/outputs, interfacing modules, link to the decision records of the previous task). Partial redo only updates the task brief for the rejected tasks; do not overwrite the session brief.

  2. Before starting the implementer, create a separate worktree for the current module: execute git worktree add .worktrees/{module_name}; if the module already has a worktree, reuse it; do not overwrite other modules' worktrees. Set the pending task status to in_progress and write it back to tasks.json.

  3. Dispatch one implementer in the module worktree; the phase checkpoint must be executed before dispatching:

    dispatch a subagent, load .codex/skills/implementer/SKILL.md, read the session brief from docs/forge-brief.md and the current task brief; keep the session brief unchanged within the same module, only re-read the task brief at the start or redo of each task; complete all tasks for this module one by one in dependency order, following the TDD workflow for each task, write aggregated test results to docs/test-results/{module_name}.json, and git commit.
    
  4. Wait for the implementer to exit, read the module summary docs/test-results/{module_name}.json and verify: each task from the current task brief has a result, all tests and scenarios are all green, no failures, the module worktree must also contain a readable docs/decisions/{module_name}.md, and the implementer has completed a commit. Missing summary file, missing decision records, missing tasks, test failures, or incomplete commits are all considered module implementation failures.

  5. After aggregated tests pass, Forge performs a static code review for each task in dependency order: interface signature compatibility, no hardcoded passwords, no more than three instances of duplicate code, files located in the directories specified by the architecture. Each check records the corresponding task_id, without repeating the module collaboration and cross-layer checks done in the mid-review.

  6. After all task minor reviews pass, immediately merge the current module's worktree according to the current merge_preference. Until the merge is successful, the relevant tasks remain with status="in_progress". In mindless mode or with merge_preference="auto", merge directly. For ask (simple/strict interaction), do not pause here; merge directly and list the module worktree and merge result in the exit summary.

  7. After a successful module merge, set the passed task status to done, append task:{task_id}:merged one by one to completed_phases in forge-state.json, execute git worktree remove .worktrees/{module_name} and delete the merged module branch. When all tasks in the current module are complete, automatically lock and advance to module_review.

  8. On merge conflicts or merge command failure, append an event="fail" event, retain the module worktree and task in_progress status, write last_error, do not append to completed_phases, prompt the user to resolve the conflict and enter "forge continue" to retry. Do not automatically delete an unmerged worktree.

  9. If aggregated tests or any task minor review fails: append an event="fail" event, write the specific modification suggestions and the list of rejected task_ids to the task brief in the module worktree's docs/forge-brief.md, increment retry_count, reset only the rejected tasks to pending, keep other passed tasks as done. After reset, dispatch the implementer again in the same module worktree, only redo the rejected tasks, do not rerun the entire module, and continue reusing the original session brief. If minor reviews reject tasks more than 2 consecutive times, first require the implementer to perform system debugging (reproduce the root cause, trace the source, then fix and verify).

  10. When all tasks in the current module are complete: set locked=true, module_review_passed=false, phase="module_review", automatically advance to the next phase module_review. Do not advance to the next module without passing the mid-review.

module_review: Mid-Review and Module Rollback

  1. Execute only when all tasks for the current module are complete and locked=true. Before entering the mid-review, increment review_round by 1. Each round of mid-review for the same module increments this value. Write the brief, with input as the current module's code + docs/architecture.md, output as docs/module-review.md.

  2. Execute a six-axis module basic review according to .codex/skills/product-reviewer/module-review.md: correctness, testing & verification, security, maintainability, performance & cost, interface contract. All six axes must appear in the report. Each conclusion must have evidence, inspection basis, or material limitation explanations.

  3. Execute:

    dispatch a subagent, load .codex/skills/product-reviewer/SKILL.md, read docs/forge-brief.md, complete the tasks for the current phase and write the expected output files.
    
  4. Wait and confirm the report exists and is readable, then read must_fix_count.

  5. must_fix_count = 0: Set locked=false, module_review_passed=true. If there is a next module, set current_module to the next module, current_task_index=0, review_round=0, phase="build". If all modules are complete, keep locked, set review_round=0 and phase="system_review", after which the system review will have its own independent count. Automatically advance to the next phase (next module's build or system_review).

  6. must_fix_count > 0: Read docs/module-review.md, locate the ## Must Fix section, take the first - Problem description: line verbatim, write it into last_review_issue (do not abbreviate or rewrite. If there are more than 1 must-fix item, append " (N items total)" at the end). Append an event="fail" event, keep locked=true, set module_review_passed=false. Map the must-fix items in the report to the corresponding tasks, reset these tasks to pending, reset current_task_index to the sequence number of the first pending task in the current module. If no pending task exists, retain the original value and report a task mapping anomaly. Write the modification suggestions into the brief, then set locked=false, phase="build". Automatically dispatch the implementer for repair. After all module tasks are complete again, re-lock and repeat the mid-review.

system_review: System Review and System Rollback

  1. Execute only after all module mid-reviews have passed and are locked. When entering system_review, treat review_round as an independent system review count. Increment it by 1 before each round of system review. Do not mix it with module mid-review round counts. Write the brief, with input as the full codebase + docs/architecture.md, output as docs/system-review.md.

  2. Execute an Agent system review according to .codex/skills/product-reviewer/system-review.md, which must check six top-level dimensions: LLM, context engineering, tools, constraints, verification, correction. Cost, memory, reliability, and evaluation can only be secondary check items. Each dimension must have inspection basis, evidence of issues, or material limitation explanations.

  3. Execute:

    dispatch a subagent, load .codex/skills/product-reviewer/SKILL.md, read docs/forge-brief.md, complete the tasks for the current phase and write the expected output files.
    
  4. Wait and confirm the report exists and is readable, then read must_fix_count.

  5. must_fix_count = 0: Set locked=false, phase="done", append system_review to completed_phases, automatically advance to the next phase done.

  6. must_fix_count > 0: Read docs/system-review.md, locate the ## Must Fix section, take the first - Problem description: line verbatim, write it into last_review_issue (do not abbreviate or rewrite. If there are more than 1 must-fix item, append " (N items total)" at the end). Append an event="fail" event, map the must-fix items to the affected modules, reset the corresponding tasks to pending, write the modification suggestions into the brief, set locked=false, module_review_passed=false, phase="build". The affected modules are sequentially re-run through implementer → minor review → lock → mid-review. After all affected modules pass the mid-review, re-lock and automatically execute the system review.

Review Convergence and Interaction Depth

Hard Loop Limit: The global review loop is capped at 5 rounds. If the same module and same review type has not converged after 5 rounds → force a pause, output "Exceeded 5 rounds, suggest rolling back to design phase or skipping with debt marking."

Interaction Depth Hook:

  • Mindless: Only fix must-fix items; suggestions are automatically recorded and do not block, no pausing.
  • Simple: Fix must-fix + suggestions; advance automatically.
  • Strict: Fix must-fix + suggestions; pause after each review conclusion for user confirmation.

All three modes do not block ignorable items. Strict mode's pauses apply to architecture review, task review, mid-review, and system review conclusions. After user confirmation, resume the current automatic flow.

done: Completion

  1. List the artifacts from architecture, tasks, module reviews, and system review.

  2. Read docs/forge-events.json and output a timeline summary: total time, time proportion per phase, the phase with the most retries, timeout count (counting events with event="fail" and summary or last_error containing "timeout").

  3. Read docs/features.md, extract the core feature list, and fill it into the following user guide verbatim, preserving line breaks:

    Forging complete. Here are the core feature paths for your product:
    
    {core feature list extracted from features.md}
    
    It is recommended to run through them to verify that everything functions correctly. After running, return here and say 'analyze product' and I will collect runtime logs and forge event data to provide optimization suggestions.
    
  4. Restore the current project's merge_preference to ask. Do not dispatch any more sub-agents.

Loading File List in Brief

When writing docs/forge-brief.md each time, automatically write the "Loading Files" section based on the current phase. The format is a Markdown unordered list, with each file wrapped in <forge_skill>filename</forge_skill> (semantic tag to distinguish internal domain knowledge from external data). File paths are relative to the corresponding skill's directory under .codex/skills/.

Loading File List by Phase

PhaseTarget AgentLoading Files
clarifyForge main conversation(none, handled by Forge itself)
design (phase B architecture design)product-designerdesign.md
design (task revision mode)product-designertask-breakdown.md
reviewproduct-reviewercut-table.md, architecture-review.md
review (re-review mode, must_fix>0)product-reviewercut-table.md, architecture-review.md, review-focus.md
build (task review)product-reviewercut-table.md, task-review.md
build (module implementation, retry<2)implementer(empty list)
build (module implementation, retry>=2)implementerdebug-mode.md
module_reviewproduct-reviewercut-table.md, module-review.md
module_review (re-review mode)product-reviewercut-table.md, module-review.md, review-focus.md
system_reviewproduct-reviewercut-table.md, system-review.md
system_review (re-review mode)product-reviewercut-table.md, system-review.md, review-focus.md

Re-review mode determination condition: must_fix_count > 0 (previous review round did not pass, current round is a re-review).

Format when writing the brief:

## Loading Files

- <forge_skill>cut-table.md</forge_skill>
- <forge_skill>architecture-review.md</forge_skill>

(For implementer brief when retry>=2: write - <forge_skill>debug-mode.md</forge_skill>; normally write (none); in re-review mode, append - <forge_skill>review-focus.md</forge_skill> after the base list)

File Path Resolution

Paths in "Loading Files" are relative to the .codex/skills/ directory. After the sub-agent reads the brief, it looks for these files in the corresponding skill directory. The product-reviewer's loading files are in .codex/skills/product-reviewer/, the product-designer's in .codex/skills/product-designer/, and the implementer's in .codex/skills/implementer/.

Brief Status Bar Override (Mandatory)

Before dispatching a sub-agent after writing the brief each time, the following steps must be performed. No one may skip this—incorrect status bar data will cause the sub-agent to make wrong decisions; these are production metrics.

Steps

  1. Execute python scripts/patch-status-bar.py
  2. Check the exit code:
    • Non-zero → Stop, do not dispatch the sub-agent, report the script error and stdout content to the user.
    • 0 + stdout first line is SKIP → No target sub-agent (e.g., clarify phase), skip the subsequent verification steps, continue normally.
    • 0 + stdout first line is OK → Continue to step 3.
  3. Execute grep "retry_count" docs/forge-brief.md, extract the retry_count value from the status bar section in the brief.
  4. Compare that value as a string with the retry_count in the VERIFY line.
  5. If mismatched → Stop, do not dispatch, report "Status bar disk persistence verification failed: retry_count in brief=<brief_value>, retry_count in VERIFY line=<verify_value>".
  6. If matched → Dispatch the sub-agent.

Steps 3-4 are a defensive check on disk persistence—to prevent cases where the script claims write success but the rename fails due to a full disk, etc.

Script Produces Two Pieces of Data

ConsumerWhat to ReadWhenPurpose
Forge (main agent)VERIFY: line from stdoutAfter script returns, before dispatchingVerify state correctness, decide if it is safe to dispatch
Sub-agent## Running Status section in briefUpon reading briefObtain the latest task distribution and retry count status

VERIFY: Line Format

When the script returns OK, the last line of stdout is a VERIFY: line containing the status information from the brief after successful patching:

VERIFY: {phase}:{current_module}:{current_task_index}:{retry_count}:{review_round}:{must_fix_count}

Merge Strategy

Merge preference (merge_preference) is stored in the state and configurable by the user:

ValueMeaningApplicable Scenario
autoForge automatically merges module worktreesFrom the second normal/emergency run, or when the user is already confident in the automated process
askBefore each module merge, prompt the user for confirmation (default)First run or uncertain risk

State File Schema Details

FieldTypePossible Values / Notes
phasestringclarify, design, review, build, module_review, system_review, done
current_modulestringEmpty string "" or module name from tasks.json; for modules whose tasks are being tracked
current_task_indexnumberIndex of the first pending task in the current module's task list
must_fix_countnumberNumber of must-fix items in the latest review report (if a review round has not passed, this may be >0)
suggestion_countnumberNumber of suggestion items in the latest review report
retry_countnumberNumber of implementation retry rounds for the current module's implementer within the current build
review_roundnumberCount of review rounds (for module mid-review or system review, depending on the current phase)
lockedboolWhen true, the current module is completed and awaiting mid-review; when module_review_passed=true and locked=false, it can proceed to the next module
module_review_passedboolWhether the current module's mid-review has passed
completed_phasesarrayArray of strings recording the phases and tasks that have been completed; e.g., ["clarify", "design", "review", "task:01:merged"]
last_errorstringError description after the last fail or halt; cleared after successful recovery
last_review_issuestringThe original text of the must-fix item description from the latest review report; used for recovery context in re-reviews

All fields are mandatory and must be included in every write; completed_phases can be an empty array. Data types are JSON native; do not use strings to represent numeric types.

User Profile

  • Path: ~/.forge/user-profile.json
  • User profile fields:
FieldTypeDescriptionExample
tech_stackarrayPreferred technology stack["Python 3.12+", "FastAPI", "SQLAlchemy"]
test_frameworkstringPreferred testing frameworkpytest
code_stylestringCoding style guide or pathPEP8
commit_conventionstringCommit message conventionconventional-commits
artifact_pathstringArtifact output pathdocs/
...extensible(any)Future extensible fields

Profile reading rules:

  • Read on every start and every phase transition.
  • File does not exist → silently skip, do not provide default values.
  • JSON corruption → print error and skip the file for this run, do not block the process.

Additional Behavior for clarify Phase:

  • When reading the user profile, if tech_stack exists, write it into the brief's "## Technical Stack" section.
  • When interviewing the user, first check whether the requirement conflicts with the tech stack. If it does, ask the user to confirm.

Platform Support

This skill is designed for Codex. It also supports the Claude Code and Cursor platforms (their SKILL.md calls the forge command). On other Agent platforms, it can be adapted by writing a lightweight adaptor wrapper.

Repository Structure Overview

.codex/
├── skills/
│   ├── forge/
│   │   └── SKILL.md          (this file)
│   ├── product-designer/
│   │   └── SKILL.md          (architecture/task design)
│   ├── product-reviewer/
│   │   └── SKILL.md          (review/review templates)
│   └── implementer/
│       └── SKILL.md          (code implementation)
└── scripts/
    └── patch-status-bar.py   (status bar patch script)

Copyright

This skill and the associated design, review, and implementer skills were written by AnHuoZhe.

相关技能