AI-First Development Methodology
Purpose
The methodology keeps project and feature work understandable across sessions while making the process proportional to the task. Durable project facts live in Project Knowledge, an approved user-spec is the contract for a planned feature, execution skills own their domain workflows, and fresh reviewer agents diagnose completed work without taking decisions away from the orchestrator or the user.
Operating Model
Requests route directly to skills by intent. The global commands/ source is currently empty;
feature planning, direct execution, initialization, documentation, and finalization do not depend
on command wrapper files. Request the workflow in plain language; historical shorthand such as
/new-user-spec or /done does not imply that an installed slash-command wrapper exists.
Choose the smallest path that fits the work:
| Need | Path |
|---|---|
| Small, well-defined change | Invoke the matching execution skill directly |
| Feature whose behavior or approach needs agreement | user-spec-planning → approval → execution → finalization |
| New repository | project-initialization → initial Project Knowledge → feature or ad-hoc work |
| Documentation-only work | documentation-writing with the evidence boundary named by the request |
| Review or audit only | Use the matching review skill or reviewer without modifying the artifact |
One request may activate several skills. For example, a UI feature with state changes uses both
layout-writing and code-writing; their verification and reviewers are coordinated in one
execution rather than treated as unrelated pipelines.
Planned Feature Lifecycle
user-spec-planning → explicit approval → new task: implement the approved spec
→ verified implementation commit → documentation-writing feature finalization
Plan the Feature
user-spec-planning owns the complete planning contract:
- Start or resume
work/{feature}/logs/userspec/interview.yml. Ask 3–4 questions per batch and run as many batches as the actual gaps require; there is no fixed number of interview cycles. - Load the Project Knowledge router when it exists and follow only the routes relevant to the feature. Missing Project Knowledge does not block feature planning.
- Once the intended outcome is clear enough, run
code-researcher, writework/{feature}/code-research.md, and use code evidence in the remaining interview. - Run fresh
interview-completeness-checkerinstances until the agreed scope has no substantive requirements gap. A finding that would expand the feature returns to the user for a decision. - Fill the bundled user-spec template in place. Keep its scaffold in English, write its content in the user's language, preserve the executor instruction, and commit the draft.
- Validate every round in parallel with:
userspec-quality-validatorfor document quality, coverage, and testable criteria;userspec-adequacy-validatorfor feasibility, proportionality, and architecture fit;skepticfor factual claims about the current codebase.
- Stop when all lanes are clean or after the third validation round. Obtain explicit user approval, set the spec and interview statuses, commit the approval, and return the absolute user-spec path for a new task.
If the request contains independently valuable outcomes, planning proposes a split and waits for the user's choice. Different files, code layers, or execution skills alone do not require separate specs.
Implement the Feature
The implementation task reads the approved user-spec.md, its executor instruction,
decisions.md when present, and the relevant Project Knowledge routes. It then activates the
skills required by the agreed work:
code-writingowns application behavior, data flow, APIs, state, validation, and code changes;layout-writingowns markup, styling, typography, assets, responsive behavior, and visual evidence;infrastructure-setupowns Docker, hooks, CI/CD, delivery, release artifacts, monitoring, recovery, and other operational changes;prompt-masterowns LLM prompt creation and revision;skill-masterowns skill creation and revision.
Each executor reads context in proportion to the change, implements only agreed behavior, runs the
smallest checks that establish the result, and coordinates every reviewer required by the active
skills. When observable behavior changes, test-master selects the smallest reliable boundary
that reproduces each meaningful risk; it does not create tests for artifacts with no contract to
protect.
The user-spec template requires the verified implementation to be committed separately before
feature finalization. decisions.md receives only material decisions or deviations that need to
survive the current context.
Finalize the Feature
Feature finalization is an explicit mode of documentation-writing. The user identifies
work/{feature}/ and asks to finish or finalize it; no wrapper command file is required.
The skill reads the spec, decisions, implementation, and relevant Git history; checks whether the
feature is evidently complete; updates only affected durable Project Knowledge; removes active
links that still treat the feature folder as current; moves it to
work/completed/{feature}/; and commits the documentation and archive change. If Project
Knowledge is missing, the documentation update is skipped but archival and finalization may still
continue.
This is the only documentation mode that reads feature artifacts by default, archives a feature, or creates a finalization commit. A normal documentation update or audit does none of those.
Ad-hoc Work
A small direct request does not require a user-spec. The matching execution skill derives done from the request, reads only the needed project context, makes the focused change, and verifies it at the smallest useful boundary. Broader or cross-cutting work loads the contracts and Project Knowledge routes it actually affects.
A risk, idea, edge case, or improvement discovered during implementation or review is a proposal, not new authorization. The executor may correct a local defect required for the agreed result; a change to behavior, scope, approach, state, fallback, validation, or material complexity returns to the user for a decision.
New Projects and Project Knowledge
project-initialization creates a dual-runtime repository from its bundled template, preserves
pre-existing files in the next available old* directory,
configures Git hooks, creates the initialization commit, connects a private GitHub
repository, creates main and dev, and leaves dev active. Reviewing or merging preserved
old* files is separate work.
The next step is initial Project Knowledge through documentation-writing. Its adaptive interview
derives what it can from the repository, uses as many question batches as needed, obtains
checkpoint agreement for project definition, architecture, and operations/experience, proposes a
documentation topology when one is not already established, and writes durable facts in English.
Project Knowledge lives in .claude/skills/project-knowledge/, whose SKILL.md is always the
router. Use structure by context boundary rather than file size:
- compact projects may keep Project, Architecture, Patterns, Deployment, and applicable UX or domain facts in the router itself;
- standard projects use the router plus
project.md,architecture.md,patterns.md, anddeployment.md; ux-guidelines.mdor domain references are added only when they form independently useful loading boundaries.
CLAUDE.md remains a compact entrypoint: project identity, Project Knowledge route, backlog path,
and default branch. It does not duplicate detailed project facts.
Sources of Truth
Approved User Spec
work/{feature}/user-spec.md owns the agreed feature outcome, behavior, acceptance criteria,
constraints, risks, accepted decisions, testing intent, and verification plan.
Project Knowledge
Project Knowledge owns current durable project facts: purpose, architecture, project-specific
patterns and business rules, deployment and operations, and applicable UX or domain guidance.
Code owns implementation detail; configuration or registries own changing inventories; work/
artifacts are evidence rather than owners of current project state.
Feature Folder
work/{feature}/
├── user-spec.md
├── code-research.md
├── decisions.md
└── logs/
├── userspec/
│ └── interview.yml
└── working/
Completed features move to work/completed/{feature}/. Planning templates, interview state, and
the initializer script are bundled inside user-spec-planning; new-project templates are bundled
inside project-initialization. There is no shared resource directory between skills.
Skill Responsibilities
| Area | Owning skills |
|---|---|
| Feature requirements | user-spec-planning |
| Project documentation and finalization | documentation-writing |
| Application implementation | code-writing |
| UI implementation and visual evidence | layout-writing |
| Infrastructure and operations | infrastructure-setup |
| Project creation | project-initialization |
| Prompt authoring | prompt-master |
| Skill authoring | skill-master |
| Test selection and quality | test-master |
| Code, layout, and security review criteria | code-reviewing, layout-reviewing, security-auditor |
A skill package owns its optional references/, deterministic scripts/, and output
assets/. This keeps dependencies portable through Claude-to-Codex conversion and public
publication instead of relying on unrelated global directories.
Review Model
Reusable methodology lives in skills. Dedicated reviewer agents add fresh isolated context, a bounded skeptical role, the minimum tools needed to inspect evidence, and a structured diagnostic result. They inherit the orchestrator's model without a caller override. They do not edit artifacts, design remediation, or decide whether work ships.
A finding is valid only when it establishes a concrete location, observed evidence, violated requirement, realistic triggering conditions, and impact. A clean result is valid. The orchestrator evaluates every result and may apply a correction only when that exact correction is inside the user request, approved plan, or user-spec.
Before the first review, the orchestrator selects the complete reviewer set required by all active skills. The set reviews the same revision in parallel as one wave; active skills do not create independent wave sequences. A correction that changes the reviewed result may trigger a fresh wave, subject to the owning workflow's limit. Implementation and writing workflows normally allow at most two waves; user-spec validation allows at most three rounds.
Common reviewer ownership is:
- every completed code implementation:
code-reviewer; - layout implementation:
layout-reviewerwith prepared source and rendered evidence; - meaningful test-code changes:
test-reviewerthroughtest-master; - changed security boundaries or an explicit security request:
security-auditor; - documentation edits:
documentation-reviewer; - material infrastructure work or an explicit infrastructure review:
infrastructure-reviewer; - prompt edits:
prompt-reviewer; - skill changes: the applicable
skill-checker,skill-logic-reviewer, andskill-simplicity-reviewerlanes;
After the final permitted wave, the executor runs applicable direct checks and reports remaining findings or required scope decisions instead of starting an unbounded review loop.
Working Principles
- Simplest sufficient process: add a document, abstraction, rule, fallback, or coordination layer only for a current requirement or demonstrated failure.
- Proportional context: load the smallest context that preserves the affected contracts.
- One outcome, one user-facing specification: split only independently valuable outcomes and let the user decide.
- Evidence before action: reviewer identity or severity never substitutes for evidence, and a finding never expands authorization.
- Stable commits: commit meaningful states such as a draft spec, approved spec, verified implementation, or finalized documentation; do not force incidental state into a commit.
Claude and Codex Dual Runtime
Allowlisted Claude files are the source of truth; Codex files are generated runtime artifacts:
Claude source Codex runtime
~/.claude/skills/** ~/.codex/skills/**
~/.claude/agents/*.md ~/.codex/agents/*.toml
~/.claude/commands/*.md, when present ~/.codex/skills/source-command-*/**
{project}/CLAUDE.md {project}/AGENTS.md
{project}/.claude/{skills,agents,commands}/** {project}/.codex/{skills,agents}/**
Markdown sources and references are adapted for the target runtime. Other bundled resources such as scripts, assets, images, and data are copied byte-for-byte, so bundled executables must remain runtime-neutral and resolve resources relative to their own package.
Conversion is manual. After changing an allowlisted global Claude source, run and review:
~/.claude/scripts/sync-to-codex.sh --apply
After changing a project-local Claude source, run and review:
~/.claude/scripts/sync-to-codex.sh --project "$PWD" --apply
Generated project AGENTS.md and .codex/** files are committed with their Claude sources,
except host-local .codex/.sync/**. Global ~/.codex/** is runtime state outside the
~/.claude source repository and is not added to its commits. A reported conflict or validation
error stops the workflow.
Approved deletions or renames may leave managed generated outputs. Inspect the reported orphan list and prune only when every target corresponds to the approved source change; do not use prune as a routine sync option.
MCP Import
MCP import is separate from skill conversion. The importer scans the global Claude MCP source and
immediate projects under ~/projects; --project adds roots rather than narrowing that host-wide
scope. Preview changes on every host whose Codex runtime must change:
~/.claude/scripts/sync-mcp-to-codex.sh
Review sources, servers, and warnings; stop on any warning or validation error. Then apply with
--apply and inspect every changed Codex configuration. The dry run does not report deletions
performed by --prune, so normal changes do not use it. Treat removal or relocation as a separate
maintenance operation: inspect the import manifest and every target before an explicit prune. No
scheduler performs either conversion, and credentials never belong in commits.