Claude
Skill
forge
Drive a software or general-work outcome through Forge's composable Spec, Plan, Build, Acceptance, and Ship lifecycle. Use when the user explicitly asks to use Forge, asks Forge to explore, spec, plan, build, review, accept, verify, simplify, finish, ship, reconcile a Spec change
Virus-scanned
Reviewed automatically before listing.
Download
brightstack-forge-skills_forge-a925be0.zip · 86 KB
Install
skills CLI
npx skills add https://github.com/brightstack/forge/tree/main/skills/forge
Claude Code
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install brightstack-forge@llmmart
Git
git clone https://github.com/brightstack/forge.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole brightstack/forge collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Forge
Files (forge)
-
assets
-
acceptance.md 1.6 KB
# Candidate acceptance **Verdict:** TODO: PASS, FAIL, RETHINK, READY_FOR_USER, INCONCLUSIVE, or BLOCKED ## Candidate and Setup - Candidate: TODO - Passing Build review: TODO - Retained accepted baseline and approved delta: TODO or `None.` - Applicable Spec-apply receipt and current result hashes: TODO or `None.` - Acceptance owner: TODO - Environment and version: TODO - Fixtures and permissions: TODO - Browser, viewport, or runtime: TODO - Known setup or proof gaps: TODO ## Actual Results <!-- Include changed or new outcomes, affected unchanged outcomes, and material failure paths. --> | Scenario or obligation | Action or command | Expected | Observed | Result | Evidence | | --- | --- | --- | --- | --- | --- | | TODO | TODO | TODO | TODO | TODO | TODO | ## Preservation Coverage - Reviewed signals and resulting obligations: TODO - Changed or new outcomes exercised: TODO - Affected unchanged outcomes and failure paths exercised: TODO - Relevant prior evidence reused and reason: TODO or `None.` - Scope gap: TODO or `None.` ## Visual and Interaction Evidence <!-- Delete only when no accepted visual or interactive behavior applies. --> - Accepted visual revision and states: TODO - Actual browser interactions and viewports: TODO - Comparison and material deviations: TODO - Keyboard, focus, and assistive behavior: TODO ## Gaps and Failures - TODO: Required unavailable proof, failed scenario, or limitation; write `None.` when empty ## Final Basis TODO: State why the actual evidence supports the verdict. Test source, generated mocks, document validation, and earlier PASS labels are not current runtime proof. -
bug-spec.md 112 B
# Legacy template name Use the RC1 [Bug template](bug.md). This file remains only so historical links resolve. -
bug.md 1.2 KB
# TODO bug outcome ## Context TODO: State the reported impact, accepted behavior source, affected candidate or environment, and whether the failure has actually been reproduced. ## Expected and Actual - Expected: TODO - Actual: TODO ## Reproduction 1. TODO: Prerequisites and safe fixture 2. TODO: Exact action or command 3. TODO: Observed result and evidence ## Acceptance Criteria - TODO: Plain observable restored behavior and material boundary ## Plan Notes | Falsifiable hypothesis | Cheapest distinguishing observation | Result | | --- | --- | --- | | TODO | TODO | not run | ## QA and Spec Impact - Original reproduction before and after: TODO - Affected regression proof: TODO - Standing behavior: TODO: restored unchanged, or human-approved delta reference ## Review Surface TODO: Name the likely shared cause, sibling consumers, and evidence that would distinguish a root-cause correction from a symptom guard. ## Knowledge and Preservation (optional) - Affected or corrected domain, data, runtime, process, operations, or interface knowledge: TODO or `None.` - Preserved standing obligations and original reproduction: TODO - Signals -> affected obligations -> selected checks -> gaps: TODO -
build-log.md 1.7 KB
# Build log <!-- Append candidate sections. Preserve earlier Review and repair history. --> ## Candidate: TODO ### Packet and Ownership - Selected outcomes: TODO - Accepted authority: TODO - Builder: TODO - role name only - Delegated work and owned boundaries: TODO or none - Comparison base: TODO - Candidate identity: TODO - Retained accepted baseline and approved delta: TODO or `None.` - Spec-apply receipt and document-only result hashes: TODO or `None.` - Complete actual code/test/canonical Spec/KB/decision diff: TODO or `None.` ### Build, Integration, and Simplification - Implemented: TODO - Integrated: TODO - Simplification: TODO: changes or justified no-op - Builder checks: TODO - Known proof gaps: TODO ### Preservation Scope - Builder proposal: signals -> affected obligations -> selected checks -> gaps: TODO - Paths that narrow discovery: TODO or `None.` - Exported contracts or actual semantics that expand discovery: TODO or `None.` - Changed or new outcomes, affected unchanged outcomes, and material failures: TODO - Relevant prior evidence reused and reason: TODO or `None.` ### Independent Review - Reviewer: TODO - role name only - Reviewed actual candidate, retained baseline, approved delta, and canonical result: TODO or `None.` - Lenses and evidence: TODO - Findings and dispositions: TODO or none - Verdict: TODO: PASS, REVISE, RETHINK, READY_FOR_USER, or BLOCKED ### Repair or Rethink <!-- Delete for the first candidate. Append one section for each substantive reassessment. --> - Failed invariant or common cause: TODO - Whole-packet correction: TODO - Preserved commitments: TODO - Invalidated and reused proof: TODO - New candidate: TODO - Reassessment: TODO - Stop reason or next discriminating proof: TODO -
build-plan.md 148 B
# Legacy template name Use the optional RC1 [coordination Plan](plan.md). Build tactics and Review history belong in [build-log.md](build-log.md). -
build-result.md 115 B
# Legacy template name Use the RC1 [Build log](build-log.md). This file remains only so historical links resolve. -
concept.md 582 B
# TODO canonical concept ## Definition TODO: Define the domain concept in plain language and identify its source. ## Scope - Optional topic: TODO: Domain, Data, Runtime, Operations, or Shared foundations - Includes: TODO - Excludes: TODO ## Relationships | Related concept or entity | Relationship | Source | | --- | --- | --- | | TODO | TODO | TODO | ## Constraints and Examples - Constraint: TODO - Representative example: TODO - Counterexample or ambiguity: TODO ## Provenance - Authority or source: TODO - Last verified against: TODO - Superseded term or record: none -
decisions.md 467 B
# Human decisions <!-- Append only decisions issued or explicitly approved by a human. The guarded decision command records the source and authorization context. Proposals and routine implementation choices belong in the relevant draft or Build log. --> <!-- Preserve prior entries. Canonical decisions use stable Forge identities, descriptive filenames, and numeric D-number codes in the KB decisions index. Record a correction or supersession as a new entry. --> -
design-spec.md 115 B
# Legacy template name Use the RC1 [Design template](design.md) with an identified [visual companion](visual.md). -
design-study.html 8.8 KB · in bundle
-
design.md 2.2 KB
# Experience and visual intent ## Summary TODO: State the proposed experience change and why it matters. ## Context TODO: Name the accepted product intent, current experience, and affected users. ## End State TODO: Describe the visible result, material states, and interaction boundaries a reviewer can judge without opening another artifact. ## User Journey TODO: Describe entry, decisive action, feedback, recovery, and exit for the accepted user outcome. ## Visual Authority - Companion record: TODO: identified visual.md path, or `Not granted.` naming the assignment that owns it - Accepted asset or board: TODO - Accepted revision and represented states: TODO - Exploratory variants: TODO or none - Materially locked: TODO - Builder latitude: TODO ## Study Brief and Codebase Grounding - Decision the study makes visible: TODO - Existing surface and source revision (including relevant dirty changes): TODO - Reused components, tokens, assets, content and behavior sources: TODO: paths and symbols - Proposed delta and preserved product identity: TODO - Baseline evidence: TODO: browser capture or labelled source reconstruction - Study page and inspection evidence: TODO: use the visual companion for frame links <!-- For a visual study, follow ../references/design-studies.md and customize design-study.html. Keep product screens project-native. Omit duplicate context already held in the ticket or visual record. --> ## Material States | Surface | State | Observable behavior | Responsive and accessibility intent | | --- | --- | --- | --- | | TODO | TODO | TODO | TODO | ## Interaction and Content - TODO: Hierarchy, action, feedback, recovery, or exact accepted language ## Acceptance - TODO: Actual rendered state, viewport, interaction, or assistive behavior to inspect ## Knowledge and Preservation (optional) - Design intent or shared foundation to carry into a reviewed KB update: TODO or `None.` - Affected concepts, interfaces, processes, or design primitives: TODO or `None.` - Preserved accepted states, scenarios, and accessibility obligations: TODO or `None.` - Source, accepted revision, and authority: TODO ## References - TODO: Accepted product intent, project precedent, and design system source -
index.md 1.5 KB
# Current loop state ## Outcome TODO: State the requested outcome and current boundary in one short paragraph. ## Launch and Status - Workflow: TODO - Project, Issue, Bug, or Work - Depth: TODO - Quick or Full - Control: TODO - Guided or Auto - Agents: TODO - role names only, never first names; actual host IDs after dispatch - Boundary: TODO - Sequence: TODO - performed, reused, and pending phases - Gates: TODO - pending/satisfied approvals and decisions outside authority - Workspace: TODO - repository and actual branch/worktree when applicable - Launch acceptance or Auto grant: TODO - source and scope, not invented artifact approval - Current step: TODO - Authority status: TODO - Accountable owner: TODO - Current candidate: TODO or none - Comparison base: TODO or none - Applied Spec status and receipt: TODO: document-only, not applied, or not applicable TODO: One short paragraph explaining workflow, depth, and team choices, uncertainty, who starts next, and what the user can override. For Auto, cite its grant. Keep selected values above plain; do not add recommendation suffixes or role aliases. ## Pointers - Human decisions: TODO - Accepted or proposed Spec: TODO - Retained accepted baseline and approved change: TODO or none - Selected Issues or work: TODO - Build record: TODO - Acceptance record: TODO - Canonical Spec or knowledge: TODO or none ## Current Gaps - TODO: Missing authority, evidence, environment, or decision; write `None.` when empty ## Next TODO: Name the next action and owner without claiming unperformed work. -
interface.md 816 B
# TODO interface ## Purpose and Ownership - Purpose: TODO - Optional topic: TODO: Data, Runtime, Operations, or Shared foundations - Producer or owner: TODO - Consumers: TODO - Maintained source of truth: TODO: code, schema, external contract, or document ## Contract | Operation, event, or field | Input / precondition | Output / effect | Failure behavior | | --- | --- | --- | --- | | TODO | TODO | TODO | TODO | ## Invariants and Compatibility - TODO: Authorization, validation, ordering, idempotency, compatibility, or lifecycle rule ## Verification - TODO: Current evidence or executable contract check - Known gap: TODO or none ## Provenance - Source and revision: TODO - Human-authorized decision: TODO or none <!-- Link maintained schemas and code rather than copying details that will drift. --> -
issue.md 1.5 KB
# TODO outcome title ## Context TODO: Explain why this bounded outcome matters, what becomes true, and the accepted source of its scope. Keep the issue useful on its own; link project documents only when they exist. ## Acceptance Criteria - TODO: State a plain, observable result. Describe behavior, not implementation. ## Non-Functional Requirements <!-- Delete when no material constraint shapes acceptance. --> - TODO ## QA Plan TODO: Name the cheapest credible proof of the outcome, material failure or boundary cases, and affected integration behavior. ## Depth and Assignments - Effort and complexity: TODO - assessment and material uncertainty; reuse an adequate estimate - Depth: TODO - Quick or Full; record the user's selection and changed assessment - Agents: TODO - assigned role names only; never first names TODO: PM records the Issue first. Engineer records the assessment after that draft exists. Explain required design then contracts and proof; no separate estimator. Do not spawn those specialists together. ## Implementation Notes <!-- Optional. Record helpful source anchors, seams, exclusions, or a short approach. --> - TODO ## Knowledge and Preservation (optional) - Domain, API, process, data, runtime, operations, or design intent for a reviewed KB update: TODO or `None.` - Affected and preserved decisions, concepts, processes, interfaces, or scenarios: TODO or `None.` - Preservation signals -> selected checks -> gaps: TODO or `None.` ## References - TODO: Exact accepted authority or verified source anchor -
kb-decision.md 1 KB
# Dn - TODO durable decision <!-- Use the next available D-number and a descriptive filename. Keep the stable Forge identity in managed frontmatter or the reserved-file sidecar. --> ## Decision TODO: State the accepted choice precisely. ## Scope and Status - Decision code: Dn: replace with the next available number - Scope: TODO - Status: TODO: accepted or superseded - Effective date: TODO - Human authority or approved source: TODO - Supersedes: none ## Context and Rationale TODO: Record the decision-relevant context and why this choice was accepted. ## Consequences - TODO: Commitment, tradeoff, or downstream constraint ## References - TODO: Original decision record, affected Spec, concept, process, or interface ## Index and History - Numeric decisions index entry: TODO: `docs/knowledge/decisions/index.md` - Receipt-derived history: TODO: `forge kb history` operation or `None.` <!-- Preserve history. Supersession creates a new authorized record and updates references; it does not rewrite the source decision. --> -
kb-index.md 1.5 KB
# Knowledge index <!-- Optional entry point. Create it only when the repository has earned a useful corpus. --> ## Scope TODO: State the domain or product area this index covers. ## Optional Reading Topics | Topic | Records present | Suggested open types and templates | Status | | --- | --- | --- | --- | | Domain | TODO or `None.` | `Domain Concept`; concept template | TODO | | Data | TODO or `None.` | `Data Model` or `Persistence Contract`; concept or interface template | TODO | | Runtime | TODO or `None.` | `Runtime Component` or `Runtime Contract`; concept or interface template | TODO | | Core processes | TODO or `None.` | `Core Process`; process template | TODO | | Operations | TODO or `None.` | `Operational Practice` or `Operations Contract`; process or interface template | TODO | | Shared foundations | TODO or `None.` | `Shared Foundation` or `Foundation Contract`; concept or interface template | TODO | ## Canonical Records - Decisions index: TODO or `None.`; order canonical `D1`, `D2`, and later codes numerically. - Standing Specs and accepted scenarios: TODO or `None.`; link them once instead of copying requirements. - Other earned concepts, processes, and interfaces: TODO or `None.` ## Provenance and Gaps - Primary source set: TODO - Receipt-derived history: use `forge kb history`; do not hand-assemble shipped claims from this index - Contradiction, missing source, or stale record: TODO or none <!-- Link standing Specs once; do not duplicate their requirements in the knowledge corpus. --> -
kb-log.md 831 B
# Knowledge change log <!-- Append factual maintenance history. This log records changes; it does not approve them. --> ## TODO — Knowledge change - Operation: TODO: add, update, remove, merge, or verify - Records: TODO - Base and resulting revisions: TODO - Human authority or request: TODO - Preserved references and meaning: TODO - Semantic review and validation: TODO - Observed gaps or conflicts: TODO or none - Receipt: TODO: `.forge/memory/<operation_id>.json` or `None.` - History classification: TODO: Spec change, knowledge or decision maintenance, or evidenced system delivery - Delivery claim: TODO: state `None.` for document-only, failed, or unaccepted work <!-- `forge kb history` derives successful operation history from receipts. This optional OKF log records local factual context; it is not approval. --> -
log.md 250 B
# Execution log <!-- Append material events. State facts and link the direct result; do not restate human authority. --> ## TODO — Event - Actor: TODO - role name only - Artifact or candidate: TODO - Observed: TODO - Evidence: TODO - Next: TODO -
plan-review.md 112 B
# Legacy template name Use the RC1 [Review template](review.md) with the exact Plan artifact as its candidate. -
plan.md 1.5 KB
# Coordination plan <!-- Create this document only when coordination detail has no better home. A clear Issue with short implementation notes needs no separate Plan. --> ## Summary TODO: State the proposed delivery route and why this coordination is needed. ## Context TODO: Link approved intent and outcome Issues or work artifact; name current owners, constraints, and dependencies that shape the route. ## End State TODO: State the complete outcome and material boundaries in this Plan's own words. ## Plan TODO: List the smallest meaningful steps, integration order, and proof. Keep reversible file-level tactics with the Builder. ## Dependencies and Shared Seams | Outcome | Provides or consumes | Coordination reason | | --- | --- | --- | | TODO | TODO | TODO | ## Integration and Proof TODO: State integration order or contention, the whole-outcome proof, and any proof that must wait for another outcome. ## Proportional Preservation <!-- Use only when the change can affect existing behavior. Keep the chain short. --> - Signals: TODO - package/API/events/shared types, data or persistence, shared foundations, removed or renamed files, test expectation changes, or Spec/decision/KB edits - Affected obligations and preserved outcomes: TODO - Selected checks: TODO - changed or new outcomes, affected unchanged outcomes, and material failures - Gaps: TODO or `None.` ## Risks and Open Decisions - TODO: Material risk, factual gap, or consequential choice and owner -
process.md 607 B
# TODO process ## Purpose and Outcome TODO: Name the business or operational outcome and the process boundary. <!-- Use this open OKF concept type for Core processes or Operations when earned. --> ## Actors, Inputs, and Outputs - Actors: TODO - Inputs and preconditions: TODO - Outputs and completion: TODO ## Workflow 1. TODO: Actor action and observable result ## Exceptions and Recovery - TODO: Material alternate path, failure, ownership, and recovery ## Governing Rules - TODO: Accepted Spec, decision, policy, or other authority ## Provenance - Source: TODO - Last verified against: TODO -
product-spec.md 120 B
# Legacy template name Use the RC1 [Product template](product.md). This file remains only so historical links resolve. -
product.md 1 KB
# Product outcome ## Summary TODO: State the proposed product change and why it matters in a few sentences. ## Context TODO: Name the specific user, situation, current pain, and evidence or accepted human intent behind the work. ## End State TODO: Describe what the user can do or observe when the smallest coherent change succeeds, including material boundaries. ## Scope - In: TODO - Out: TODO ## Acceptance Criteria - TODO: Plain, demonstrable user or product outcome ## Material Constraints <!-- Delete when none are accepted. --> - TODO: Constraint and authority ## Open Decisions - TODO: Consequential choice and owner; write `None.` when resolved ## Knowledge and Preservation (optional) - Domain, process, or design intent to carry into a reviewed KB update: TODO or `None.` - Affected decisions, concepts, processes, or interfaces: TODO or `None.` - Preserved obligations and scenarios: TODO or `None.` - Source and authority: TODO ## References - TODO: Human decision, research, current behavior, or other authority -
review.md 3.2 KB
# Independent review **Verdict:** TODO: PASS, REVISE, RETHINK, READY_FOR_USER, or BLOCKED ## Review Boundary - Candidate: TODO - Comparison base: TODO - Reviewer: TODO - Accepted authority: TODO - Authority status: TODO: whether that intent carries recorded human approval, or is a draft the loop record shows was routed under a standing grant - Inspected scope: TODO - Staffing and reason: TODO: Reviewer alone or focused delegated judges - Known evidence or source gaps: TODO ## Dimension Coverage | Dimension | Applicability / reason | Selected skill or source | Owner | Evidence / verdict or gap | | --- | --- | --- | --- | --- | | Code Review | TODO | TODO | TODO | TODO | | Design | TODO | TODO | TODO | TODO | | Quality | TODO | TODO | TODO | TODO | | Spec | Required | TODO | TODO | TODO | | Craft | Required | TODO | TODO | TODO | Disabled or waived coverage: TODO or `None.` Include exact scope, reason, and human authority for any waiver. Never label omitted coverage PASS. ## Dimension Reports <!-- For Reviewer-owned dimensions, concise evidence-backed table entries above can suffice; share the boundary and checks instead of repeating them. Remove this unused section. When delegating, preserve each original return as a labelled section or linked managed report beside the Reviewer's disposition. The record owner persists read-only judges' returns. --> ### TODO: Dimension - Selected skill/source: TODO - Candidate, comparison base, dirty state, and path scope: TODO - Inspected authority: TODO - Checks and observed evidence, including limits: TODO - Findings: TODO or `None.` Each needs severity, authority, reachable trigger, observed evidence or causal trace, material consequence, and remedy boundary. - Required proof gaps: TODO or `None.` - Dimension verdict and basis: TODO: PASS, REVISE, RETHINK, READY_FOR_USER, or BLOCKED ## Integration - Candidate/authority binding and required coverage: TODO - Duplicate findings and conflicts, with evidence-backed dispositions: TODO or `None.` - Accompanying software-record contract: TODO or `Not applicable.` ## Checks and Evidence | Lens or check | Evidence | Result | Limits | | --- | --- | --- | --- | | TODO | TODO | TODO | TODO | ## Preservation Challenge - Builder's proposed scope: TODO - Signals confirmed or expanded by the Reviewer: TODO - Affected obligations and preserved outcomes: TODO - Selected checks and evidence: TODO - Gaps or unjustified path-only claims: TODO or `None.` ## Findings <!-- Use P0 only for a demonstrated accepted-Spec violation or critical correctness, security, or data-loss failure. Use pragmatic P1 only with a plausible current trigger, material consequence, and scope-aligned correction. P2 is advisory. No quota or manufactured nits. Write `None.` when no finding survives admission. --> ### TODO: Finding title - Severity: TODO: P0, P1, or P2 - Rubric: TODO - Authority: TODO - Observed evidence: TODO - Trigger and consequence: TODO - Disposition: open ## Verdict Basis TODO: Judge the complete candidate, identify blocked or unrun proof, and state what must be true for reassessment. Label any explicitly human-waived dimension excluded from a scoped PASS. A changed candidate requires a new verdict. -
root-index.md 112 B
# Legacy template name Use the RC1 [loop index](index.md). This file remains only so historical links resolve. -
ship.md 940 B
# Ship record ## Closure Basis - Accepted candidate and comparison base: TODO - Current candidate and relationship to accepted candidate: TODO - Passing Build Review: TODO - Passing Acceptance: TODO - Retained accepted baseline and approved change: TODO or `None.` - Applicable Spec-apply receipt and current result hashes: TODO or `None.` - Freshness check: TODO ## Authorized Operations | Operation | Exact target | Result | Evidence | | --- | --- | --- | --- | | TODO or `None.` | TODO | TODO | TODO | ## Result and Limits - Closure result: TODO - Historical verdicts retained under their original candidate: TODO - Changed input or discrepancy routed to owner: TODO or `None.` - Remaining limit or ungranted publication action: TODO or `None.` <!-- Record one concise closure. Do not routinely reapply canonical meaning, request another semantic verdict, relabel historical PASS results, or claim an unperformed publication. --> -
simplify.md 208 B
# Legacy template name Record Build-integrated simplification, including a justified no-op, in the RC1 [Build log](build-log.md). Use [work.md](work.md) for a standalone non-delivery simplification request. -
spec-change.md 2.6 KB
# Proposed Spec change ## Authority and Inputs - Human-approved source and exact scope: TODO - Accepted baseline file and SHA-256: TODO - Current write base file and SHA-256: TODO - Approved change file and SHA-256: TODO - Related product, design, technical, or Issue sources: TODO <!-- Keep the accepted baseline and approved change independently readable. The current write base may differ from the accepted baseline. --> ## Proposed Operations ### Added - TODO: Requirement name and full proposed wording, or `None.` ### Modified - TODO: Existing requirement and complete replacement wording, or `None.` ### Removed - TODO: Existing requirement, reason, and authorization, or `None.` ### Renamed - TODO: Old name, new name, preserved meaning, and authorization, or `None.` ## Requirements and Scenarios ### Requirement: TODO TODO: Write the complete normative behavior this operation proposes. #### Scenario: TODO meaningful situation - GIVEN TODO: concrete context or precondition - WHEN TODO: user action or system event - THEN TODO: observable outcome ## Preserved Commitments - TODO: Preserved requirement or scenario reference and why it remains unchanged ## Knowledge Intent and Preservation Scope - Loop domain, data, runtime, process, operations, or design intent for the KB: TODO or `None.` - Affected decisions, concepts, processes, interfaces, or shared foundations: TODO or `None.` - Signals: TODO - package/API/events/shared types, data or persistence, shared foundations, removed or renamed files, test expectation changes, or Spec/decision/KB edits - Affected obligations: TODO - Selected checks: TODO - changed or new outcomes, affected unchanged outcomes, and material failures - Gaps: TODO or `None.` ## Reconciliation and Proof Gaps - Approved proposal and authority source: TODO - Routine application timing: actual work completion through Finish, or an explicitly authorized direct Spec apply - Application receipt and result SHA-256: TODO or `NOT APPLIED` - Application status: TODO: `NOT APPLIED` during ordinary Spec, or `document-only` after an authorized apply - Candidate implementation and Review: TODO or `NOT RUN` - Required acceptance evidence: TODO - Semantic conflict, concurrent change, or unavailable proof: TODO or none <!-- Spec records the approved proposal without routine canonical writes. Routine apply waits for actual work completion and Finish. An explicitly authorized direct Forge spec apply remains available; it prepares, reviews, and applies the complete result through guarded mechanics. Application does not prove implementation, Review, Acceptance, Ship, or publication. --> -
spec-review.md 112 B
# Legacy template name Use the RC1 [Review template](review.md) with the exact Spec artifact as its candidate. -
standing-spec.md 964 B
# TODO capability ## Purpose and Scope TODO: Define the current accepted capability, its users or consumers, and its boundary. This is canonical behavior, not an implementation plan or change log. ## Requirements ### Requirement: TODO TODO: State one complete binding behavior. Use MUST or SHALL when the obligation needs normative force. #### Scenario: TODO meaningful situation - GIVEN TODO: concrete context or precondition - WHEN TODO: user action or system event - THEN TODO: observable outcome ## Non-Behavioral Constraints <!-- Keep accepted NFRs or invariants that Given/When/Then cannot express well. --> - TODO: Constraint and authority ## Supporting Knowledge and Decisions (optional) - Canonical decisions, concepts, processes, or interfaces: TODO or `None.` - Preserved obligations checked by this change: TODO or `None.` ## References and Provenance - TODO: Approved Spec change, human decision, design revision, or maintained contract -
tech.md 1.6 KB
# Technical end state <!-- Keep only load-bearing choices that independent work must share. --> ## Summary TODO: State the proposed technical change and why it matters for the accepted outcome. ## Context TODO: Name verified current owners, reusable machinery, and the constraint driving change. ## End State TODO: State the operational result, material invariants, and boundaries independent work must preserve. ## Target Shape TODO: Describe the minimum technical shape needed for the accepted outcome and why the existing owner or simpler route cannot meet any proposed new mechanism's need. ## Contracts and Ownership | Seam or contract | Producer / owner | Consumers | Required behavior and failure | | --- | --- | --- | --- | | TODO | TODO | TODO | TODO | ## Data, Trust, and Lifecycle - TODO: Material invariant, authorization boundary, migration, recovery, or operating constraint ## Technical Proof - TODO: Contract, integration, migration, failure, or NFR evidence that can falsify the design ## Builder Latitude - Locked: TODO - Reversible implementation choices: TODO ## Open Decisions and Gaps - TODO: Consequential unresolved choice or missing source fact; write `None.` when empty ## Knowledge and Preservation (optional) - Data, runtime, API, operations, or shared-foundation intent to carry into a reviewed KB update: TODO or `None.` - Affected decisions, concepts, processes, or interfaces: TODO or `None.` - Preserved contracts, lifecycle rules, and scenarios: TODO or `None.` - Source and authority: TODO ## References - TODO: Accepted intent, verified source, project harness, or primary external source -
technical-spec.md 119 B
# Legacy template name Use the RC1 [technical template](tech.md). This file remains only so historical links resolve. -
visual.md 1.5 KB
# Visual companion ## Identity and Authority - Design Spec: TODO - Asset, board, prototype, or external design: TODO - Exact revision: TODO - Status: TODO: exploratory, proposed, or accepted - Human acceptance source: TODO or none - Local study page and verified preview URL: TODO or not applicable; mark ephemeral URLs - Source revision and anchors: TODO: relevant dirty changes, paths, symbols, tokens and fixtures ## Represented States | Frame ID / state | Viewport or context | Purpose / evidence type | Asset location | | --- | --- | --- | --- | | TODO | TODO | TODO: capture, source reconstruction, or proposed prototype | TODO: exact revision and frame link | ## Material Commitments - Locked: TODO: hierarchy, layout, interaction, content, typography, or other accepted intent - Builder latitude: TODO - Excluded or exploratory variants: TODO or none ## Acceptance Notes - Actual candidate states to compare: TODO - Responsive and accessibility intent: TODO - Known missing state or revision gap: TODO or none ## Study Inspection (not production Acceptance) - Inspected revision, viewports, interactions, and actual outcomes: TODO or pending - Final rendered images: TODO or unavailable - Recommendation and tradeoff: TODO - Simulated behavior, disposable shortcuts, and evidence gaps: TODO or none <!-- Update revision and represented states when the visual changes. Preserve an accepted revision before proposing another. A recommendation or UI selection is not human acceptance; a vendor ID alone is not Forge identity. --> -
wave-index.md 181 B
# Legacy template name RC1 has no Wave artifact. Use the [loop index](index.md) for current state and the [Build log](build-log.md) for selected packets and integrated candidates. -
work-spec.md 114 B
# Legacy template name Use the RC1 [Work template](work.md). This file remains only so historical links resolve. -
work.md 1016 B
# Work outcome ## Summary TODO: State the proposed deliverable and why it matters. ## Context TODO: Explain the request, intended reader or user, and boundary. State whether this work changes software, a document, research, operations, or another artifact. ## End State TODO: Describe the concrete, inspectable result and where it will exist. ## Acceptance Criteria - TODO: Observable or inspectable outcome ## Constraints and Non-Goals - TODO: Authority, source-of-truth, safety, format, or explicit exclusion ## Plan <!-- Keep only when the work needs sequencing; omit when the route is obvious. --> TODO: Record the smallest meaningful steps and any useful source anchors. ## Proof TODO: State how an independent reader or operator will verify the actual result. ## Knowledge and Preservation (optional) - Intent to carry into a reviewed KB update: TODO or `None.` - Affected and preserved obligations: TODO or `None.` - Signals -> selected checks -> gaps: TODO or `None.` ## References - TODO
-
-
references
-
build.md 5.1 KB
# Build Build produces one integrated candidate and includes independent Review. It may be invoked directly from an accepted task; a direct Build stops after its Review result and never claims Acceptance or Ship. ## Accountable Engineer One Engineer owns the whole accepted outcome, tactical plan, required Worker delegation, integration, behavior-preserving simplification, internal review, evidence, and coherent repair. Read the accepted Spec/ticket, Plan, decisions, applicable repository harness, current candidate/base, shared seams, and proof contract. Follow [Launch and workflow preparation](workflows.md): a missing or unready Issue goes to PM first, then Engineer assessment, before Build, even at Quick depth. This does not require a Project Spec. Do not bypass Launch, new intent, or consequential strategy gates because the user requested implementation. Before entering a new subtree, framework boundary, or standards domain, resolve its applicable harness and load only newly relevant rules and exemplars. Include those rules in delegated packets; neither a familiar pattern nor a persona can override the target repository's authority. For UI work, use [design direction and craft](design-direction.md) unless the target selects a replacement. Apply it within the accepted design; it does not require a new study for an already specified patch. Trace the current flow and reuse existing sound machinery. Build the smallest complete path across every necessary layer. For bugs, load [bug diagnosis](debug.md), establish a red-capable signal, test hypotheses, fix the root cause, and retain the original reproduction. For general work, choose the appropriate creator and proof rather than forcing software files or tests. Check no-change and existing-owner routes before adding a new mechanism. Apply the [Craft](judges.md#craft-rubric) test to new state, caches, parsers, classes, and contracts; a present trust, data-loss, accessibility, or recovery boundary can earn a guard on its first demonstrated failure. An apparently dead code path does not erase its accepted scenario. If a simpler scope supersedes planned machinery, drop its dependent side quests and reassess depth and staffing. Before implementation, the Builder proposes a preservation scope using [knowledge guidance](knowledge.md): signals, affected accepted obligations, selected checks, and gaps. Inspect changed and shared package contracts, APIs, events, data or persistence paths, foundations, removed or renamed files, test expectation changes, and Spec, decision, or KB edits. Paths narrow discovery; exported contracts and actual semantics expand it. Keep the proposal proportional and record it in the Build handoff. Dispatch Workers under [concrete staffing](workflows.md#concrete-staffing), showing ownership and sequencing first. Each Worker gets accepted constraints, seams, source anchors, owned paths, proof, stop conditions, and a return contract. One writer owns a hot seam; the Builder integrates and tests the combined result. A Worker return or local green check is not a candidate verdict. Simplify before independent Review: remove accidental duplication, unused layers, speculative compatibility, unnecessary configuration, and review-driven scaffolding while preserving accepted behavior and proof. Clean focused work can record a justified no-op. Direct “Forge simplify” performs this bounded Build operation without becoming a lifecycle phase. Before independent Review, assemble the complete actual candidate diff: code, tests, any directly applied canonical Spec, earned factual knowledge edits, and decision references that the outcome changed. Supply the retained accepted baseline and approved delta separately so canonical working bytes do not become their own authority. Review and Acceptance bind to this same candidate. A document-only receipt is provenance for the installed target; it is not Build evidence. ## Independent Review and repair After internal review and required project checks, pin the exact candidate/base and invoke [Review](review.md) with a separate Reviewer. Record Build, Review, findings, dispositions, repairs, exact candidate, and the preservation scope in [build-log.md](../assets/build-log.md). Keep actual Acceptance evidence under `verify/`. The Reviewer challenges the Builder's scope and the canonical Spec/KB diff when the candidate carries intent or factual updates. Admitted P0s and pragmatic P1s return the whole accepted packet to the Builder. Group symptoms by state owner, lifecycle, or contract and repair the shared cause. Reassess the complete outcome and affected proof; a changed candidate needs a new independent verdict. P2 advice never extends the loop. Use the finite rethink and stop contract in the main skill. If repeated repairs to the same mechanism do not converge, revisit its owner and invariant at the existing RETHINK boundary rather than growing case-by-case guards. ## Completion Return candidate/base identity, built behavior or deliverable, actual commands and observations, independent Review verdict, unresolved gaps, and direct-Build boundary. Review PASS establishes engineering judgment at that candidate, not runtime acceptance. -
cli.md 8.4 KB
# Executable mechanics The executable `forge` CLI is a thin local helper. It creates and validates managed documents, initializes loop records, protects decision operations, checks or applies prepared memory changes, queries the local knowledge corpus, and runs candidate identity checks. It also serves a selected artifact directory on localhost. It does not parse a semantic “forge spec” request, select a phase or persona, approve meaning, judge a candidate, or advance delivery. After a public install, the binary lives at `~/.local/bin/forge`. From a project directory, install skills, then initialize a loop: ```bash forge setup forge init LOOP_ID --title TITLE ``` `--repo` defaults to `.`. `setup` copies skills into the project from GitHub, or from `--pack` when you pass a local package directory. `init` creates loop records. Do not run these from `~/.local/bin`; that directory is not a pack root. Default `--tools` is `agents` (Cursor, Codex, and Muse Code). Claude Code users must pass `--tools claude`, or pipe the curl installer into `FORGE_TOOLS=claude sh` (the assignment goes on the `sh`, not on the `curl`), and then read `.claude/skills/forge/SKILL.md`. Pass `--tools cursor` or a comma-separated list when a project uses more than one host. Unknown tools fail. From the Forge package directory in a source checkout, inspect the live contract before using it: ```bash bun run build:cli ./dist/forge --help ``` The checked-out contract is: ```text forge setup [--repo REPO] [--tools LIST] [--pack PATH] forge init LOOP_ID --repo REPO --title TITLE forge serve DIRECTORY [--port NUMBER] [--json] forge docs create KIND PATH --repo REPO --title TITLE [--code CODE] [--body-file FILE] forge docs update PATH --repo REPO [--body-file FILE] [--set KEY=JSON_OR_STRING] forge docs validate [PATHS...] --repo REPO forge docs append PATH --repo REPO --heading HEADING --body-file FILE forge decision record [LOOP_DECISIONS_PATH] --repo REPO --authorization-file FILE --body-file FILE [--title TITLE] [--supersedes Dn-or-existing-legacy-id] forge candidate --repo REPO [--path PATH ...] [--expect ID] forge memory verify|apply MANIFEST --repo REPO forge kb ask QUERY --repo REPO [--scope SCOPE ...] forge kb verify --repo REPO [--scope SCOPE ...] forge kb history --repo REPO forge kb add|update|remove MANIFEST --repo REPO ``` ## Artifact previews `forge serve DIRECTORY` runs a foreground static server bound to `127.0.0.1`. The directory is explicit and relative to the command's working directory; it does not use `--repo` or need a Git checkout. The default port is `0`, selecting an available port. An explicit occupied port fails instead of silently changing. Read the printed URL; never guess the port. `--json` prints one readiness record with `root`, `url`, `port`, and `pid` after the socket binds. Serve the artifact directory containing `index.html` and its local assets. Nested directories serve their own `index.html` and redirect to a trailing slash so relative assets resolve. Files are read fresh on reload with caching disabled. HTML, CSS, JavaScript, images, PDFs, Markdown and other ordinary files retain their file MIME types; Markdown is served as a file, not converted to HTML. Missing files or directories without an index return 404; there is no listing or SPA fallback. Dotfiles and symlinks under the selected root are not served. Keep the process in a host-owned terminal/session for as long as the preview is needed. Ctrl+C or SIGTERM closes the server and releases the port. No daemon, server registry, project command runner, transpilation, Vite installation, or browser launch is involved. Use the project's existing dev/build pipeline when an artifact needs framework imports or compilation, then serve its built output or use that project's running preview. The browser's Reload action picks up file edits; no live-reload script is injected into artifacts. Readiness proves a bound local server. The host must open the returned URL and inspect the actual asset/revision before claiming rendered proof. Keep local preview lifetime separate from durable artifact paths and external publication. ## Document metadata and edits The CLI assigns `id` (UUID), readable `code`, immutable `type`, `title`, `status`, `createdAt`, and `updatedAt`. Codes contain letters/numbers separated by `-`, `_`, or `.`. Creation/identity fields stay fixed; use `--set` for other metadata. Spec/Issue scaffolds are drafts. Initialized indexes and logs are active containers; neither state means that their contents are approved or their claims proved. Required metadata uses top-level scalar values. CLI values use JSON-compatible strings, lists, or objects in YAML frontmatter. This is a deliberately scoped reader, not a general YAML implementation: unknown nested/block metadata is retained verbatim during ordinary body edits, but is not interpreted as authority or schema. `--body-file` accepts body-only Markdown; direct file tools may edit the ordinary body while preserving its frontmatter. On creation, a missing top-level heading is supplied from `--title`; an existing heading is retained and empty bodies are rejected. Updates still require a descriptive heading. `docs validate` with no paths checks the explicit `.forge/identities.json` corpus; pass paths to check a specific draft. Edit ordinary document bodies using normal file tools, then validate relevant managed paths. A decision authorization file is JSON with `actor: "human"`, a local transcript path or URL in `source`, an actual `quote`, bounded `scope`, and an ISO `date`. The operation checks a local quote and embeds the context; it does not authenticate the human. Generic document updates cannot create or overwrite decision authority. `forge decision record [LOOP_DECISIONS_PATH]` records the authorized decision in the canonical decisions bundle, assigns the next readable `D1`, `D2`, or later code, updates the numeric decisions index, and retains a memory receipt. When a loop decisions path is supplied, it also records the canonical reference there. The path may be omitted for standalone recording. `--supersedes` accepts a canonical D-number or an existing legacy decision identity; supersession creates a new record and preserves the prior one. After human approval, specification and associated knowledge reconciliation is prepared by a qualified specialist and checked for boundary fidelity. The natural skill request `Forge spec apply <change>` then uses the existing executable `forge memory verify MANIFEST --repo REPO` and `forge memory apply MANIFEST --repo REPO` with `application: spec`. Natural-language `Forge spec merge` maps to the same skill operation; there is no executable Spec apply or merge alias. Generic memory and explicit delivery-history jobs omit that discriminator and remain compatible. `forge kb ask` queries the canonical local corpus and must return cited sources and explicit gaps. Read [memory](memory.md) for the prepared-change contract and current exact syntax. `forge kb history` is receipt-derived. It summarizes successful applied memory operations from `.forge/memory/`; it does not treat a manual log, a failed operation, or structural validation as shipped behavior or compliance proof. Malformed or incomplete receipts are reported as issues. An integrated delivery with no canonical document delta can be recorded explicitly through `forge memory verify` and `forge memory apply` with an empty `changes` list plus human authorization and nonempty source, evidence, and acceptance references. KB write verbs reject empty changes. This receipt does not imply deployment or publication. Canonical `docs/specs` and `docs/knowledge` are protected from generic document writes. Prepare drafts under a loop or another ordinary path, pin proposed hashes and independently retained authority inputs, then use memory verify/apply after approval. Its document-only receipt does not establish implementation, Review, Acceptance, or Ship. Candidate identity excludes `.forge` loop mechanics by default, avoiding self-invalidating verdict writes. It includes tracked, untracked, deleted, mode, and symlink state for selected paths. Include changed accepted Spec/decision paths explicitly with repeated `--path`, or separately pin their exact accepted revision in the packet. Treat `--help` from the checked-out version as authoritative. Do not invent a command or substitute shell writes for a protected operation. CLI success establishes only the mechanical claim named by that operation. -
debug.md 1.2 KB
# Bug diagnosis Treat a bug as a discrepancy between accepted expected behavior and observed behavior. The report or [bug template](../assets/bug.md) records expected and actual results, impact, environment, reproduction steps or evidence, and relevant Given/When/Then scenarios. A conflict with standing behavior is a human decision. Before source edits, reproduce through the lowest realistic seam when possible. Record observations separately from hypotheses. Rank falsifiable hypotheses by fit and cost, then run the cheapest observation that distinguishes them. Revise the explanation when evidence falsifies it; do not preserve the first plausible story. Trace the behavior through real callers and shared state owners. Fix the common cause and inspect affected siblings rather than patching one visible symptom. Remove temporary probes after diagnosis. Preserve the original reproduction as acceptance proof and add focused regression evidence at the correct seam. If the behavior, expected result, environment, or required access cannot be established, report the exact gap instead of guessing. Hotfix urgency can narrow depth and sequencing; it cannot waive accepted intent, independent Review, the original-reproduction check, or honest proof limits. -
design-direction.md 5.1 KB
# Design direction and craft Use this during Design, UI Build, and Design review when the target harness has not selected a replacement. It is Forge's own baseline guidance; no external skill or design service is required. Selected specialists refine these choices within the same accepted scope. Study assembly and proof live in [design studies](design-studies.md); review admission lives in [the Design rubric](judges.md#design-rubric). ## Choose a direction from the job Identify what a person must notice, understand, and do. An operational screen prioritizes state and efficient action; a reading surface prioritizes structure and comfortable reading; a persuasive surface needs credible reasons to act; an exploratory artifact can let its content lead. These are questions for judgment, not styles to impose on whole product categories. For existing UI, begin with its actual components, typography, tokens, assets, content and interaction conventions. Refinement preserves that identity and behavior outside the requested delta. A replacement needs explicit scope. For a new surface, use nearby established patterns. For a genuinely new product, propose a coherent direction grounded in its audience and material; distinguish a recommendation from human approval. Describe the visible problem and the proposed effect in one concrete sentence. For example, “The filter produces an unexplained blank; keep the surrounding list layout and show the active scope with a way back to results.” Choose the principal change that solves it: hierarchy, grouping, density, reading, state, or recovery. Other adjustments should support that change. Do not require a named style, aesthetic dial, invented alternative, or decorative signature for a small fix. ## Make the direction visible Use the relevant questions below, not a checklist of mandatory treatments. | Concern | Design judgment | Evidence to inspect | | --- | --- | --- | | Hierarchy and layout | Let the primary task lead. Use proximity and alignment to express relationships before adding containers. Preserve information needed to act. | At normal size, can someone distinguish current state, primary content and next action? Does grouping survive a narrow viewport? | | Typography and content | Reuse the system's type roles. Tune measure, weight and line spacing to real content; keep labels distinct from values. Keep product terms and factual claims intact. | Long names, wrapping, truncation and fallback fonts; can a person still read and identify the item? | | Color and contrast | Give color a semantic job. Reuse established action and status roles; include text or shape for meaning. Compare actual foreground and background pairs. | Text, controls, focus and selected states remain distinguishable; muted content is still readable. | | Density and responsiveness | Choose what wraps, reorders or scrolls according to the task. Preserve meaningful relationships and reading order. | Actual product viewport, not a scaled desktop image; long content and controls at narrow width; any deliberate scrolling is usable. | | Interaction and recovery | Prefer the target's native or established controls. Make the action, immediate feedback and recovery understandable. Include only states earned by the journey. | Mouse and keyboard activation, focus after updates, repeated actions, and relevant empty/error/pending states. A screenshot cannot prove these. | | Imagery and motion | Use imagery to explain the subject or establish relevant character. Motion should explain change or provide feedback without blocking action. | Text remains real and readable, assets have a purpose, reduced-motion behavior is usable when animation is present. No image or animation is required. | Visible labels, semantic controls, useful focus indication and understandable reading order are part of the design. Avoid simulating an interactive control with an inert decoration. If a study omits an out-of-scope interaction, disclose that locally rather than pretending it works. Do not invent destructive, optimistic, or persistence behavior to make a prototype feel complete. ## Critique the outcome Inspect the rendered result against the user job and incumbent or accepted visual authority. Start with the strongest claim the design makes and try a plausible counterexample: an unusually long existing name, narrow width, keyboard-only recovery, or a state transition that removes the focused control. Select checks that could change the recommendation, not a universal state matrix. Separate a demonstrated failure from another valid treatment. Explain the user consequence and location of a material issue; avoid judgments such as “not premium” or demands for more visual novelty. Batch related corrections, preserve the whole intended outcome, and follow the study workflow's bounded inspection cycle. A study recommendation and successful local inspection do not approve a design or establish production Acceptance. The handoff should make the direction buildable: what changes, what stays, which states and responsive transformations matter, and what the rendered artifact demonstrates. Put this in the existing design/visual record; no extra report or phase is required. -
design-studies.md 8.2 KB
# Codebase-anchored design studies Produce one browsable page that helps the human understand a proposed UI change. Use this during Spec Design when a visual decision needs a mock, study, or board. A direct request stops with the study and its handoff. A small Build patch with an accepted design reuses that design; it does not earn a new study or approval gate. The Designer owns the direction and rendered critique. Read the target harness and [design direction and craft](design-direction.md), or the selected replacement design specialist, first. Their craft guidance informs this artifact within Forge's phase and authority boundaries. ## Ground the decision Start with what the user must accomplish: operate a tool, understand information, make a decision or explore an artifact. Let that job determine hierarchy, density and expression. State whether this is a refinement within the incumbent system or an authorized replacement. Choose one coherent treatment that serves the job; do not stack unrelated styling moves to make the study look more elaborate. Name the user, task, proposed change, preserved behavior, and decision the page must make visible. Preserve the incumbent visual system unless the user asks to replace it. Missing design documentation does not make an existing app greenfield. Inspect the target route or surface, its nearest components, tokens/theme and assets, representative content and state behavior, and package manifest. Record a short source map in the existing Design or visual record: repository revision (including relevant dirty changes), paths and symbols, what is reused, and what is proposed. Read the implementation behind each anchor; a plausible path is not grounding. Use faithful fixture content and label it as illustrative. When runnable, inspect the current surface in the browser. Distinguish a captured baseline from a source reconstruction. If runtime, credentials, source, or assets are unavailable, label the affected frame and evidence gap; never present a reconstruction as an observed screenshot. A new surface uses a nearby incumbent pattern as context, without inventing a before screen. ## Compose one study page Start from [design-study.html](../assets/design-study.html). Copy and customize it as an ordinary visual asset, usually `spec/studies/<slug>/r1/index.html`. Use the existing [Design](../assets/design.md) and [visual companion](../assets/visual.md) records for intent and identity. Scaffold the companion with `forge docs create visual` using [CLI mechanics](cli.md), edit its body, and run `forge docs validate` before handoff; copying a Markdown template or inventing frontmatter does not create a valid managed record. For a small study, the existing ticket plus one visual record can carry the brief and source map; do not duplicate prose. Template the presentation structure, not the product screens: - **Brief strip:** change, decision, exact revision, proposed/exploratory/accepted status, and a visible link to the companion record. - **Main frames:** a believable slice of the real product with enough surrounding context to understand the change. For a refinement, normally show current and proposed with the same content, state, viewport, and scale. For an unresolved choice, show two or three materially different treatments, explain tradeoffs, and recommend one. A single clear direction needs no invented alternatives. - **Material states:** add only the narrow viewport, empty/loading/failure, focus, or other state that the actual decision earns. Give frames stable IDs, state, viewport dimensions, evidence type, and revision. A responsive board does not prove that the represented product is responsive. - **Annotations:** put short consequences next to the relevant frames. Separate observed behavior, proposed changes, preserved commitments, and open questions. Favor product language; keep technical anchors in a compact source section. Use quiet board chrome and let the product occupy most of the page. The starter's type, colors, and frame sizes belong to its chrome, never to the target app. Reuse installed project components when a local preview seam makes that straightforward; otherwise use an explicitly labelled faithful HTML/CSS reconstruction. Copy only the necessary tokens and primitives with source anchors. Do not flatten a real product into generic cards, fake metrics, or a new aesthetic chosen by category. Plain HTML/CSS with small local scripts is the default for a bounded study. Use the existing project preview stack only when imports or interaction fidelity earn it. Isolate frame CSS from board chrome: an iframe gives a real viewport for media queries; scoped CSS alone does not. Label a scaled desktop frame as scaled desktop, not mobile proof. Keep full-size frames inspectable through local scrolling or a frame link. The page itself must remain readable on a narrow screen and keyboard usable. Model decision-critical interactions locally, label simulated behavior, and avoid live writes or real account actions from the study. No editor, canvas engine, new runtime dependency, generated image, or external design account is required. An existing accepted external design can remain the visual authority; do not rebuild it just to fit this starter. Use image generation only when the requested visual material earns it, not to rasterize core UI text and controls. Respect the host's filesystem and preview capabilities; do not invent preview URLs or a Forge rendering command. HTML is not a managed Markdown document and does not go through `forge docs create`. ## Inspect the actual artifact For static studies, use the executable `forge serve <study-directory> --json` from [CLI mechanics](cli.md) and keep it running in a host-owned terminal/session. Open its returned URL and verify that it shows this revision. If the executable or local listening capability is unavailable, use an available host preview and report the actual mechanism and gap. Framework-backed studies use their existing project preview pipeline. Inspect rendered desktop and narrow views together, including the product frames at their declared viewports. Exercise decision-critical controls and keyboard focus; check content, clipping, readability, contrast, and material states against the brief. Capture and view the resulting images. Repair material defects in one batch and recapture once; name remaining gaps rather than extending a cosmetic polishing loop. Existing Forge defect escalation still governs blockers. Save preview observations and final screenshots beside the study, linked from the companion. This is study inspection, not production Acceptance; do not place it under `verify/` as if the application had passed. If browser proof is unavailable, return the useful artifact with inspection pending and the concrete gap. Source inspection or a generated image cannot substitute for rendered proof. ## Hand off and preserve authority Return the page path, verified preview URL (mark ephemeral when applicable), exact revision, final image paths, recommendation/tradeoff, source map, and gaps. Keep the companion's represented-state links synchronized with actual frame IDs. A recommendation, selected comparison, local toggle, screenshot, or reviewer PASS never records human acceptance. Reuse actual human authority when it covers the same choices; otherwise keep the page proposed and ask only for the consequential decision after making it reviewable. Record accepted revision, states, materially locked choices, and Builder latitude in the existing visual record. Preserve an accepted revision before making a new proposal; editing a proposed study does not silently update accepted intent. When an accepted asset lives under `.forge`, explicitly include its revision and companion in the Review/Acceptance authority packet or selected candidate paths; the default candidate check excludes loop mechanics. Bind screenshots to the inspected asset revision and recapture affected states after edits. Build follows the accepted choices and reuses production architecture rather than shipping disposable study code. Review and Acceptance compare the real candidate against the exact accepted frames and interactions, including material preserved states. Unaccepted variants remain decision evidence, not requirements. -
execution.md 2 KB
# Lifecycle composition Full delivery accounts for `Spec → Plan → Build → Acceptance → Ship`. Each phase is also a useful stopping boundary. The coordinator records whether a phase ran, reused current accepted evidence, remains pending, or is blocked; absence is never silently treated as success. Start with [Launch and workflow selection](workflows.md). Quick/Full depth governs preparation and staffing; Guided/Auto governs pauses within explicit authority. Launch is an opening step, not another phase. Review stays inside Build and `verify` selects Acceptance, not an additional phase. | Entry | Result and stopping boundary | | --- | --- | | Explore | Answers a question or compares approaches; creates no delivery authority | | Spec | Defines and approves proposed intent without routine canonical writes | | Plan | Defines the implementation approach and useful outcome Issues | | Build | Produces one integrated candidate, simplifies it, and obtains independent Review | | Review | Judges one pinned candidate without editing it | | Acceptance | Exercises the actual Review-passed outcome | | Ship | Checks the complete accepted candidate once, records concise closure, and performs authorized publication | | Finish | At actual work completion, reconciles approved unapplied memory and authorized existing-PR readiness; direct Spec and Plan remain proposal-only | | Spec apply / legacy Spec merge / KB | Maintains canonical meaning directly, without claiming software delivery | A full run may reuse an accepted ticket as Spec and record a one-sentence Plan for a tiny change. It still accounts for those phases. A direct Build or Review stops without inventing broader acceptance. An Acceptance failure returns to Build, then affected independent Review and Acceptance. A human-owned semantic decision returns to the human. Before moving forward, record the exact candidate, accepted sources, current gaps, and authority for the next action. Publication, merge, deployment, release, or production changes require the corresponding user authority. -
finish.md 2.3 KB
# Finish `Forge finish <loop>` is a natural operation inside the existing Forge skill, not a sixth phase, separate skill, or executable `forge finish` command. Run routine Finish only at actual work completion: normally after Build or a later earned boundary, or after a general-work deliverable is complete. A direct Spec or Plan request remains proposal-only and does not run Finish. An explicitly authorized direct `Forge spec apply <change>` remains a separate operation. Inspect the active repository and loop for approved unapplied standing-Spec or knowledge changes. The two are optional and independent. The active repository owns its canonical memory; never default another repository's work to Bright. A deliverable such as a newsletter article is not automatically knowledge. For an approved unapplied standing-Spec change, invoke `Forge spec apply <change>` once. That operation alone owns preparation, its single adversarial read, and guarded verify/apply. For approved knowledge-only work, invoke the existing guarded KB or memory operation; its owner performs one equivalent fresh proportional adversarial read before mutation. Finish does not prepare the same result or add another review. Skip categories with no approved change; do not create placeholder proposals or receipts. Persist the resulting repository changes normally within current Git authority. If Finish or the accepted Launch authorized readiness and exactly one existing PR belongs to the active branch, a normal non-force push of the exact Finish commits to that associated head and draft-to-ready are within that bounded authority. Verify the observed repository, branch, head, and PR state. An already-ready PR or no PR is a no-op. Report ambiguity or unavailable discovery instead of guessing. Never create or reopen a PR, force-push, merge, deploy, release, or publish. On retry, inspect existing receipts and current canonical bytes, Git state, and PR state. Matching applied bytes and an already-completed PR transition are complete; do not replay them. Preserve successful earlier work when a later step failed and resume only the remaining authorized action. Record what actually happened, what was skipped, the observed receipt/Git/PR result, remaining gaps, and limits in the ordinary loop index and log. -
intake.md 310 B
# Intake is part of Spec Forge has no separate Intake phase or command. Route context gathering, source retrieval, workflow detection, informed questions, and authority framing through [Spec](spec.md). For open-ended investigation with no intended artifact or delivery commitment, use [Explore](research.md). -
judges.md 9.5 KB
# Review judges The independent Reviewer owns coverage and the integrated verdict. These are five review responsibilities, not five mandatory agents. Do not omit an applicable dimension because a change is small. ## Staffing Use [concrete workflow staffing](workflows.md#concrete-staffing), including its precedence when both expanded-Review triggers apply. Record the observed trigger and actual dimension owners. Without either trigger, one Reviewer covers every applicable dimension with evidence and a verdict in one compact report. Each required Judge owns one dimension in a separate read-only context; Reviewer integrates original returns and covers undelegated dimensions. Shared authority and checks need not be duplicated. Staffing never waives coverage or Acceptance. ## Applicability and ownership | Dimension | Applies when | Bundled source and responsibility | | --- | --- | --- | | Code Review | Code (including UI markup and styles), tests, executable configuration, or agent instructions that control execution change | [Forge Code Review](../../forge-code-review/SKILL.md): defects, regressions, security, code/test quality, lint/types, engineering standards | | Design | UI behavior, rendered surfaces, or UI design artifacts change | Design rubric below: accepted visual fidelity, interaction states, accessibility, UI conventions | | Quality | A knowledge-work deliverable is the reviewed outcome | Quality rubric below: accuracy, completeness, reasoning, usefulness, writing/artifact standards | | Spec | Every candidate | Spec rubric below: approved end state, constraints, omissions, invented requirements, preservation | | Craft | Every candidate | Craft rubric below: proportionality, overbuilding, underbuilding, current evidence of necessity, justified mechanisms and remedies | UI markup and stylesheet changes, including CSS-only changes, activate both Code Review and Design: Code Review inspects source correctness and engineering standards; Design inspects rendered fidelity, interaction, and accessibility. A pure design artifact without a code change activates Design without Code Review. Accompanying software docs, plans, and loop records do not routinely activate Quality. The Reviewer checks their managed-artifact contract during integration. A separately requested report or document deliverable does activate Quality. There is no Standards or Evidence judge: standards belong to their owning dimension and evidence is required from each. Code Review reads acceptance criteria to establish correct behavior; Spec owns the exhaustive intent audit. Craft does not replace code-quality inspection. Route an obvious concern outside a judge's remit to its owner with evidence, without performing a second full audit. ## Selection, replacement, and disable Resolve each applicable dimension in this order: explicit current user choice, applicable repository harness, bundled source. Read the actual selected skill or rubric; a name or remembered description is not its procedure. A replacement gets the same boundary, authority, read-only contract, evidence bar, and report schema. It cannot recursively invoke Forge Review or create another panel. Selection is human-readable guidance, not configuration or a plugin API. For example, a repository's AGENTS.md may say: ```text For Forge Review, replace the Code Review dimension with .agents/skills/team-review/SKILL.md. For Forge Review, replace the Design dimension with .agents/skills/ui-review/SKILL.md. ``` A user can instead say, "Disable the bundled Code Review skill and use the team review skill for Code Review." This replaces the implementation, retaining coverage. "Disable Design for this review" skips that dimension with the reason, authority, and exact scope recorded; never silently run its bundled default. Disabling coverage is not proof it passed. Report `DISABLED`, distinct from `NOT_APPLICABLE` and a returned verdict. A missing explicitly selected replacement is a gap; do not fall back unless that fallback is already authorized. Only an explicit human waiver of the omitted coverage can permit an integrated `PASS` scoped to the remaining dimensions; label that PASS with its excluded dimension and waiver. A harness disable alone or an agent's tool limitation does not supply that waiver. Otherwise required disabled or unavailable coverage precludes PASS. No selection can rewrite accepted requirements or waive required runtime Acceptance. Preserve user choices through the existing authority records. ## Shared investigation and admission Try to break the change. Choose plausible counterexamples to its strongest claims, follow real consumers, and test consequential failure paths. Then challenge your own allegation: inspect existing safeguards and equally valid implementations. There is no finding quota. A clean candidate earns a clean report. Every admitted finding needs controlling authority, a reachable current trigger, observed evidence or a concrete causal trace, and a material consequence. Name the smallest honest severity and proportionate remedy boundary. Do not manufacture nits, personal taste, speculative scale, hypothetical inputs outside the accepted surface, or unrelated debt. Preserve real standards: an explicit material rule violation is not dismissed as preference. A required proof gap remains a gap; state the authority requiring that proof and the unproved claim, without inventing a runtime failure. Reuse credible current proof and rerun only affected, missing, stale, contradictory, required, or hypothesis-relevant checks. ## Design rubric Use [design direction and craft](design-direction.md) as the bundled design guidance, or the selected replacement. Challenge the primary user task with an affected long-content, narrow-width, keyboard, or state-transition case. Check actual type/color roles and content relationships against the incumbent system; novelty and decoration are not quality requirements. Load the target's accepted design revision, applicable UI standards, affected journeys and states, and real rendering tools. Compare actual rendered output for visual claims. Inspect hierarchy, legibility, alignment, clipping, overflow, missing content, responsive behavior, and accepted fidelity. Exercise affected interaction, loading/empty/error/success states, keyboard and focus behavior, semantics, and accessibility. A screenshot alone cannot prove interaction. Admit material drift from accepted visual authority or a demonstrated usability or accessibility failure. Do not invent a redesign, demand pixel equality unless required, or turn preferred spacing into a blocker. Source inspection may support a causal accessibility finding; unavailable rendering remains a gap for visual claims. State actual browser ownership and avoid concurrent browser mutation. ## Quality rubric Load the deliverable's purpose, audience, accepted questions, source requirements, and routed writing/artifact standards. Check material claims against their sources, reasoning from evidence to conclusion, omissions that defeat the stated purpose, internal consistency, usable structure, and the actual rendered/exported artifact when layout matters. Try a consequential counterexample or alternative explanation. Admit factual error, unsupported consequential conclusions, accepted omissions, or material artifact-standard violations. A different writing voice or an interesting unrequested topic is not a defect. Disclose unavailable sources and proof limits. ## Spec rubric Use the assigned candidate purpose and the [Reviewer’s current-obligation guidance](../../../agents/reviewer/instructions.md) to distinguish preserved standing behavior, work this candidate must deliver, and explicitly deferred work. Load independently retained accepted baseline, approved delta, decisions, NFRs, non-goals, and affected standing commitments. Trace each affected obligation forward to implementation and proof, then trace material changes back to accepted intent or legitimate implementation latitude. Check omissions, silent strengthening or weakening, contradictory scenarios, unauthorized scope, and preserved outcomes. The mutable candidate Spec or a matching receipt cannot establish its own authority. Name direct evidence or a concrete gap for each affected commitment. Do not invent requirements from tests, findings, descriptive knowledge, or synthetic users. A necessary change to accepted intent goes to the human; it is not a workaround. ## Craft rubric Judge the mechanism against the accepted problem and present operating conditions. Challenge both unnecessary machinery and inadequate robustness at real trust, data-loss, accessibility, and recovery boundaries. Follow the target's reuse and simplicity standards; an equally valid tactic is not a violation. A new named type, layer, Spec section, config knob, protocol, or dependency needs current evidence. It is earned when removing it would break the asked outcome or a present boundary, collapse distinct current meanings or invariants, prevent independent work from sharing a contract it already needs, or when concrete recurrence shows duplication now costs more than the abstraction. Future flexibility, hypothetical scale, template completeness, and taste are not evidence. Apply this test only to the proposed machinery. Do not invent architecture to justify a concept, and do not erase an earned distinction merely to reduce concept count. Require a current consequence and a proportionate remedy. A real defect needing a larger correction stays real and may warrant RETHINK; disproportionate advice cannot become mandatory work. -
knowledge.md 3.5 KB
# Knowledge and proportional preservation The optional knowledge bundle helps agents retrieve accepted authority and current system facts. It never proves compliance, acceptance, or runtime truth. ## Optional topic map Create only the topics earned by the work. Do not bootstrap empty directories or placeholder records. OKF concept types are open; the labels and templates below are suggestions, not a registry. | Topic | Questions it answers | Suggested type and template | | --- | --- | --- | | Domain | What terms, entities, and relationships mean | `Domain Concept`, [concept](../assets/concept.md) | | Data | What models, schema, persistence lifecycle, constraints, tenancy, and reads/writes require | `Data Model` or `Persistence Contract`, [concept](../assets/concept.md) or [interface](../assets/interface.md) | | Runtime | What services, workers, events, and runtime boundaries do | `Runtime Component` or `Runtime Contract`, [concept](../assets/concept.md) or [interface](../assets/interface.md) | | Core processes | How business flows, actors, inputs, outputs, and recovery work | `Core Process`, [process](../assets/process.md) | | Operations | How deployment, infrastructure, observability, and operating procedures work | `Operational Practice` or `Operations Contract`, [process](../assets/process.md) or [interface](../assets/interface.md) | | Shared foundations | Which auth, routing, library, and design-system primitives other work relies on | `Shared Foundation` or `Foundation Contract`, [concept](../assets/concept.md) or [interface](../assets/interface.md) | Use the repository's existing hierarchy and link maintained sources. Do not copy standing requirements or code that will drift into a competing record. ## Preservation packet Every loop records the smallest useful chain: ```text signals -> affected obligations -> selected checks -> gaps ``` Consider these signals: package ownership; internal or public APIs, events, and shared types; database or schema changes; persistence lifecycle, constraints, tenancy, or read/write paths; shared auth, routing, libraries, or design primitives; deleted or renamed files; removed, skipped, or expectation-changing tests; and Spec, decision, or KB edits. Package paths narrow discovery. Exported contracts and actual semantics expand it. The obligations name affected and preserved scenarios, NFRs, decisions, domain terms, processes, APIs, data rules, and design intent. The checks cover the changed or new outcome, affected unchanged outcomes, and material failure paths. Record unavailable evidence or unresolved scope as gaps. A path list is not a preservation verdict, and a full-product replay is not required for every patch. For a tiny change, a one-line scope or justified no-op is sufficient. Do not inventory unrelated untouched areas. ## Ownership and timing Spec and Plan record approved domain, API, process, data, runtime, operations, and design intent without routine canonical writes. Direct Spec apply or Finish later uses guarded memory mechanics for approved changes in the active repository. The Builder finishes factual observations as implementation becomes observable and proposes the preservation scope. The Reviewer challenges it. Acceptance exercises affected unchanged and changed or new outcomes. Ship checks the complete candidate once and records concise closure. Use `forge kb ask` to retrieve authority. Use `forge kb history` to inspect successful receipt-derived changes. KB search and structural verification never establish implementation compliance. -
memory.md 13.9 KB
# Canonical specification and knowledge memory Forge stores accepted behavior once at `docs/specs/<capability>/SPEC.md`. Supporting knowledge is a native OKF v0.2 bundle rooted at `docs/knowledge/`. Every non-reserved `.md` file is a concept with a non-empty `type`; concept types and directory hierarchy are open. `index.md` and `log.md` are reserved at every level, and the bundle-root index may declare only `okf_version` frontmatter. This is distinct from the strict Forge record corpus: `.forge/` workflow files and `docs/specs/` standing specifications keep their own identities, authority, and metadata schemas. Knowledge paths remain protected from generic `forge docs` writes. See the [OKF compatibility boundary](../../../OKF.md) for the supported consumer and producer claims. Use [knowledge and proportional preservation](knowledge.md) for the optional six-topic reading map and the signals -> affected obligations -> selected checks -> gaps handoff. OKF types stay open and no topic or corpus is mandatory. ## The applying operation owns preparation and review The responsible Spec or knowledge specialist reads the base, current canonical file, source intent, relevant decisions, and every affected requirement and Given/When/Then scenario. They prepare complete proposed files, identify preserved meaning, and return conflicts to the human. A heading match or successful CLI check cannot decide semantic preservation, approval, or implementation truth. `Forge spec apply <change>` requires an approved change and an explicit request or authority, whether called directly or once by [Finish](finish.md). The operation's responsible owner prepares complete target bytes from the approved meaning and current canonical base. One fresh independent agent with no write ownership then performs a proportional read-only adversarial review of the complete changed result plus directly affected canonical documents—not the whole corpus by default. It checks contradictions, omitted or distorted approved commitments, meaning-changing duplication, broken requirement/scenario meaning or normative links, and wrong-repository targets. Record the checker's concise `PASS` or `BLOCKED` verdict and material findings in the loop log when one exists, otherwise in the direct operation result. The checker cannot rewrite the proposal or approve changed meaning. `BLOCKED` stops before mutation; on `PASS`, use the existing guarded verification and application mechanics below. Preparation, this single adversarial read, and guarded apply are one Spec-apply sequence. Finish never repeats them. This is not a panel, lifecycle Review, durable report protocol, or whole-corpus review. Human decisions use the guarded command `forge decision record [LOOP_DECISIONS_PATH] --repo REPO --authorization-file FILE --body-file FILE [--title TITLE] [--supersedes Dn-or-existing-legacy-id]`. It assigns the next canonical `D1`, `D2`, or later code, updates the numeric decisions index, retains a receipt, and optionally links the canonical decision from the loop record. Omit the loop path for a standalone decision. It never silently rewrites a prior decision. ## Prepared manifest `Forge spec apply <change>` is a natural skill operation, not an executable subcommand. The Spec owner prepares the version 1 manifest and uses `forge memory verify MANIFEST --repo REPO`, then `forge memory apply MANIFEST --repo REPO` only after the inputs and single adversarial read above pass. Existing generic memory and KB jobs remain compatible. Natural-language `Forge spec merge` means this same skill operation; there is no executable Spec apply or merge command. Finish invokes this natural Spec-apply operation once; there is no executable `forge finish`. Standing-Spec and knowledge changes are optional and independent. Record each successful receipt. On retry, matching receipts and installed bytes are complete; do not replay them. ```json { "version": 1, "application": "spec", "operation_id": "SPEC-ACCESS-02", "authorization_file": ".forge/prepared/access-authority.json", "proof": { "status": "document-only", "source": [".forge/loops/access/spec/change.md"], "evidence": [], "acceptance": [] }, "retained_inputs": [ { "role": "accepted-baseline", "source": ".forge/prepared/access-baseline.md", "sha256": "<64 lowercase hex characters>" }, { "role": "approved-change", "source": ".forge/loops/access/spec/change.md", "sha256": "<64 lowercase hex characters>" } ], "changes": [ { "path": "docs/specs/access/SPEC.md", "kind": "standing-spec", "action": "update", "base_sha256": "<64 lowercase hex characters>", "proposed_file": ".forge/prepared/access-SPEC.md", "proposed_sha256": "<64 lowercase hex characters>", "metadata_changes": ["updatedAt", "status"] } ] } ``` Every proof field is a list of existing repository files or HTTP(S) references. `source` is always required. `integrated` also requires evidence and acceptance; `document-only` may leave those lists empty and never claims implemented behavior. Reference existence is checked, not authenticity or evidentiary sufficiency. The authorization file is JSON with nonempty `actor`, `source`, `quote`, `scope`, and ISO `date`. `actor` must be `human`. For a repository-local source, the exact quote must occur in that file; an HTTP(S) source is retained without a network authenticity claim. An `application: spec` manifest requires at least one `accepted-baseline` and one `approved-change` retained input. An optional `context` input can retain a named Issue, PRD, or decision source. Local inputs use repository-relative paths and exact SHA-256; the apply fails if any bytes changed. An HTTPS source uses `sha256: null`; its address and evidentiary limit are retained, but Forge does not fetch or authenticate it. Retain only the named authority inputs needed for recovery. The accepted baseline, current write base, and approved change are distinct. Do not reconstruct the accepted baseline from HEAD, the comparison base, or current pre-apply bytes. A copied file or quote preserves evidence; it does not by itself authenticate human approval. Each change uses one of these exact Forge mutation kinds and canonical homes: | Kind | Canonical path | | --- | --- | | [`standing-spec`](../assets/standing-spec.md) | `docs/specs/<capability>/SPEC.md` | | [`concept`](../assets/concept.md) | Any non-reserved `docs/knowledge/**/*.md` | | [`kb-index`](../assets/kb-index.md) | Any `docs/knowledge/**/index.md` | | [`kb-log`](../assets/kb-log.md) | Any `docs/knowledge/**/log.md` | | [`kb-decision`](../assets/kb-decision.md) | Legacy alias for `docs/knowledge/decisions/<name>.md` | | [`process`](../assets/process.md) | Legacy alias for `docs/knowledge/processes/<name>.md` | | [`interface`](../assets/interface.md) | Legacy alias for `docs/knowledge/interfaces/<name>.md` | The generic `concept` mutation kind is independent of the document's open OKF `type`. Legacy aliases preserve existing manifests without defining a type registry. `add` uses a null base hash, a proposed file, and its exact proposed hash. `update` uses the exact current SHA-256 plus a proposed file and proposed hash. `remove` uses the exact current SHA-256 and null proposed file/hash. A Spec manifest requires `proposed_sha256` for every installed file so a changed draft fails before any write. Compatible generic memory manifests may omit it. Updates list every changed frontmatter field in `metadata_changes`. Standing-Spec identity and creation metadata remain immutable; native OKF metadata can change under the same authorization and stale-base checks while the separate Forge record identity remains stable. Forge writes the proposed bytes without reserializing unknown YAML or Markdown, including frontmatter fields it does not interpret. An explicit identity-preserving rename is one `move` change with `path` naming the new canonical path, `from_path` naming the old canonical path, `base_sha256` and `proposed_sha256` both pinning the unchanged bytes, `proposed_file: null`, and `metadata_changes: []`. The old and new path must have the same kind, the target must be unused, and the registry identity moves with the file. Only an `application: spec` manifest accepts moves. Never infer a rename from headings or content, and do not encode it as a same-ID remove/add pair. Validation rejects stale bases, repeated operation IDs, no-op updates, duplicate targets or Forge identities, unsafe paths, and changes that break protected standing-Spec links. An `application: spec` manifest additionally requires at least one standing-Spec change and `proof.status: document-only`; it can never claim integrated delivery. The complete set validates before mutation. Apply stages files, transfers a registered prepared draft identity to its canonical home, and records the manifest, human context, hashes, and prior/removed bytes under `.forge/memory/<operation_id>.json`. The immutable receipt records `application: spec`, the copied manifest and manifest hash, authorization/source snapshots, retained input snapshots, and each result's installed content/hash plus applicable previous or removed content. Its status remains document-only after later work; Review and Acceptance create their own candidate-bound evidence instead of rewriting historical provenance. Participating local CLI mutations share one advisory lock through checks, writes, and rollback. On failure, rollback undoes only completed writes whose installed bytes and mode still match; it preserves intervening changes and reports an incomplete rollback for reconciliation. Registry undo restores only owned entries. Raw filesystem writers can bypass the advisory lock; this is not an atomic transaction against external editors or recovery after process termination. ## Focused knowledge commands `forge kb scaffold PATH --repo REPO --type TYPE --title TITLE --code CODE` creates a Forge-identified OKF concept draft under `.forge/prepared/`. It cannot write canonical memory. Applying the reviewed draft transfers its stable identity; applying an external draft creates a sidecar identity without rewriting its bytes. Reserved OKF files always keep identity in `.forge/identities.json` rather than forbidden frontmatter. Forge reports the bundle-relative OKF concept ID separately from this Forge UUID and readable code. Identity transfer is limited to a registered `.forge/prepared/` source. Reusing bytes from a standing Spec, canonical knowledge document, or other registered file does not move that source's identity; the new record receives its own. Registered legacy Forge indexes/logs remain inspectable as `forge-legacy` and nonconformant until an explicit prepared update converts their bytes to native OKF while keeping their sidecar identity. `forge kb ask QUERY --repo REPO [--scope KIND ...]` returns lexical references and explicit unmatched-term or unreadable-corpus gaps. Every retrieved file is a `working-copy` observation with authority and implementation explicitly not inferred. When a valid applicable receipt exists, the result includes its receipt, operation ID, application, document-only proof status, recorded/current hashes, and `matching` or `diverged` state. Malformed or diverged provenance is an explicit gap. It does not synthesize a requirement or turn an old receipt into current delivery truth. `forge kb verify --repo REPO [--scope KIND ...]` consumes the native OKF bundle, checks required structure and Forge-owned identities, and reports optional metadata-family, trust, staleness, and local-link conditions as health output. Missing optional fields, unknown types or keys, and broken links remain consumable; malformed required structure is reported as an issue. When present, a bare `verified` mapping is normalized to one event before Forge derives the advisory `unverified`, `machine-confirmed`, or `human-reviewed` trust tier. These signals do not grant acceptance, authorization, or permission to change the repository. Health output also does not establish semantic truth, source authenticity, implementation compliance, or attestation. Scopes are the Forge kind names in the table. With no scope, reading and verification cover all supported canonical views and native knowledge documents. Multiple scopes use a repeated `--scope` flag. `forge kb history --repo REPO` reads successful memory receipts under `.forge/memory/` and returns a concise changelog of applied Spec changes, knowledge or decision maintenance, and evidenced system delivery. It does not reconstruct failed operations or claim that a receipt proves semantic compliance. Use the retained receipt and linked evidence for the exact operation and gaps. Malformed, incomplete, and failed receipt-shaped files appear as history issues instead of successful entries. This is structural validation of the retained receipt envelope; Forge does not re-run its stale-base check against current files or authenticate old sources while reading history. A completed bug fix or refactor with no honest Spec or knowledge delta may still use `forge memory verify` and `forge memory apply` with `changes: []` only when an actual delivery-history record was requested. This narrow delivery-only form requires `proof.status: integrated`, human authorization, and nonempty source, evidence, and acceptance references. It records reviewed delivery evidence; it does not imply deployment or publication and is not mandatory paperwork for restorative work. KB add, update, and remove always require at least one matching canonical knowledge change. `forge kb add|update|remove MANIFEST --repo REPO` applies a manifest whose every change matches that verb and targets only `docs/knowledge/`; it uses the same human authorization and stale-base protections. Standing Spec changes use `forge memory apply`. The KB operations can create or update prepared concept, index, and log bytes, but do not import/export a corpus, bootstrap a repository, or execute `resource`, `computation`, `executor`, or `attester` references. -
plan.md 7.4 KB
# Plan Plan translates accepted intent into the smallest useful implementation approach. It never creates product requirements and always remains an explicit accounted phase, even when its result is one concise note. A substantial Plan opens with a short Summary, Context, and self-contained End State, then a Plan of the smallest meaningful steps and proof. A brief Quick note can stay in its Issue, index, or Build log without those headings. For direct Plan, this procedure is the entrypoint; full-lifecycle setup is not a prerequisite. Apply or reuse [Launch, depth, and workflow assignments](workflows.md) only for this requested boundary. Plan can live as Issue notes or under `spec/`; it need not be a separate document. Read the accepted Spec or ticket, applicable standing obligations, relevant human decisions, current implementation, and target repository harness. Accepted intent owns the outcome; code, plans and logs cannot invent requirements. Return consequential conflicts to the human before dependent work. Reuse an imported Issue rather than recreating it. The Engineer owns technical strategy, decomposition and constraints. Product Manager owns product scope and observable outcome criteria when those need authoring; technical tasks stay with Engineer. Use the host's mapped professional teammates when available, with Forge's judgment guidance for their assignment. A precise engineering Plan over a ready Issue needs no new PM pass. For an Issue request without a ready Issue or issue-like object, PM prepares the Issue, then Engineer assesses it under the shared workflow rules, at either depth. Product authorship does not add another Product approval gate. For a small Issue, record the proposed route, existing machinery to reuse, proof, and material risk. Do not create sub-Issues unless they improve ownership, coordination, or reviewability. For a project, use [plan.md](../assets/plan.md) only when additional coordination is useful and create meaningful outcome Issues from [issue.md](../assets/issue.md). Keep Issue criteria observable and map behavioral obligations to scenario IDs; never use “implement component X” as acceptance. ## Save the Plan at the requested depth A direct Plan deliverable or a Plan that needs an independent handoff uses managed identity and validation. For Quick Build, brief Plan notes may instead live in the accepted Issue, loop index, or Build log. Do not create a separate Plan merely to account for the phase. Resume an existing loop when it fits; initialize a new one only when the work actually needs a managed record. Keep current state accurate without inventing completed phases. Read [protocol](protocol.md) for additional authority or handoff details when needed, not to populate every possible lifecycle record. When a separate managed Plan is needed, use the installed CLI to scaffold it, then edit its body with normal file tools, preserving the generated frontmatter and a descriptive `#` title. For a new loop and Plan, the commands are: ```text forge init <loop> --repo <repo> --title <title> forge docs create plan .forge/loops/<loop>/spec/plan.md --repo <repo> --title <title> forge docs validate .forge/loops/<loop>/spec/plan.md --repo <repo> ``` Skip initialization when resuming; validation follows the body edit. For an existing managed record, update that record and validate it instead of creating a duplicate. Replace or remove unused template prompts in authored records; keep the plan, relevant pointers and Build-pending state sufficient for the next owner. Unused decision and Build records remain empty. Use a subcommand's `--help` if its syntax is uncertain; the full [CLI reference](cli.md) is for operations beyond this procedure. An already-approved ticket is source authority to reference, not by itself a new request to install a canonical decision or bootstrap a KB. Link that ticket as authority. A new human decision, not an empty decision file, warrants recording. Before handoff, inspect the saved result once: the requested artifact exists and validates; its proposed proof can distinguish the intended change; index/log pointers and completion claims match observed tool results. Scope code checks to code or tests so they do not count the ticket or Plan. Run safe discovery or precondition checks where useful; an expected pre-change failure is different from an unusable command. Do not implement the change to validate a Plan. If a save fails, repair the cause and verify the result while tools are available. Do not end with a promise to retry. Write dependent success entries only after the operation succeeds; on failure leave accurate incomplete state and report the gap. Structural validation alone does not prove the Plan sound or delivered. Follow the host's authorized durable-storage/checkpoint policy, then stop before Build. Checkpointing does not establish Acceptance or Ship. A useful Plan covers: - accepted outcomes, constraints, preserved behavior, and non-goals; - current flow and reusable machinery; - approach, material seams, dependencies, integration order, and one-way doors; - each outcome's acceptance and proof; - bug hypotheses and cheapest distinguishing observations when applicable; - actual open decisions and explicit stopping conditions. For changes that can affect existing behavior, include the compact signals -> affected obligations -> selected checks -> gaps record from [knowledge guidance](knowledge.md). Start with changed package ownership, APIs, events, shared types, persistence, shared foundations, deleted or renamed files, test expectation changes, and authority edits. Expand from paths when exported contracts or actual semantics reach more consumers. The Builder proposes this scope; it is not a path-only pass or a full-product replay. Avoid speculative architecture, unrequested feature flags, configuration, fixed agent counts, file-by-file instructions, and duplicated Spec prose. Builders own reversible tactics. If implementation would require a semantic change, return the decision before dependent work. Trace the actual flow first and use the existing owner or sound reusable pattern when it meets accepted intent. If a new cache, parser, class, configuration, or durable contract is proposed, state the current boundary or demonstrated cost it solves and why the simpler route fails; use [Craft](judges.md#craft-rubric) to judge whether it is earned. Do not plan away accepted scenarios because code now appears unreachable. Preserve them as obligations or seek a scoped change. In Guided, brief a newly consequential Plan in the conversation, link the exact Plan, and obtain human approval before its boundary review. Auto uses the explicit grant without an ordinary pause and records delegated authority, never human approval of unseen text. Existing approval can be reused when it covers the same strategy. Independent Plan review checks faithful coverage, technical soundness, proportionality, and usable handoff without adding requirements. Carry loop domain, API, process, data, runtime, operations, or design intent into the proposed reviewed KB update. A direct Plan request stops after the result and records Build as pending, including under Auto. Guided consequential revisions return to approval; do not dispatch Build or edit production code while that approval is pending. Brief faithful tactical notes inside accepted direct-Build authority create no extra human gate or planning team. Before coordinated Build, show actual Worker ownership, sequencing, and the integrating Engineer under the shared staffing rules. -
protocol.md 7 KB
# Authority, records, and handoffs ## Authority The current human instruction and recorded human decisions own intent. Accepted standing specifications plus an approved change own durable behavior. Project harness rules and accepted technical/design decisions govern execution. Plans organize delivery; source, tests, findings, logs, and descriptive knowledge are evidence rather than authority. Do not repair a mismatch by rewriting the specification to match current code. Do not turn an agent proposal, discovered source behavior, prototype, review finding, or synthetic-user reaction into a requirement. If accepted sources conflict or changed meaning is needed, state the conflict, consequences, options, and recommendation for the human. A question, possibility, analogy, inference, or recommendation is not a decision. For each normative addition, removal, or stronger guarantee, retain the exact human source and its scope, or the specifically bounded Auto grant. A generic go-ahead to a decision brief covers its disclosed material choices, not a buried commitment in a linked draft. Explicit approval of an exact full revision retains that revision's stated scope. One answered choice leaves independent choices open. An edited Spec or favorable Review cannot approve itself. When the human corrects an authority claim, repair the existing source note and dependent records with the actual sequence of question, correction, and later answer before relying on them again. ## Small managed record Record [Launch choices](workflows.md) in the existing index/log: Workflow, Depth, Control, boundary, sequence, team, workspace, and pending/satisfied gates. Preserve the user's acceptance or explicit Auto source and any subsequent changes. Log ordinary Auto progression as exercised delegated authority over the named revision, not a human artifact approval; do not fabricate protected decision records. Resume reuses current choices and actual agent IDs without another Launch ceremony. Use `.forge/loops/<loop-id>/` for a managed delivery loop: - `index.md` from [the index template](../assets/index.md): dated current snapshot, accepted sources, outcomes, ownership, candidate, evidence gaps, and one next action; - `decisions.md` from [the decision-log template](../assets/decisions.md): protected human decisions with source, actual quote, scope, date, authorization, status, and supersession; - `log.md` from [the loop-log template](../assets/log.md): concise lifecycle events and handoffs; - `spec/`: only earned intent, design, technical, work, Issue, Plan, and change records. Do not add Spec files, flags, or config the request did not earn. A gate briefing is chat only; do not save it here. - `build/log.md` from [the Build-log template](../assets/build-log.md): candidate, Build evidence, independent Review rounds, findings, dispositions, repairs, and rethink record; - `verify/`: actual [acceptance](../assets/acceptance.md) and [visual](../assets/visual.md) proof; - `ship.md` from [the Ship template](../assets/ship.md): authorized publication and concise complete-candidate closure. `forge init` marks these container/index/log records active so they can carry current state. That status says only that the record is in use; it does not accept Spec meaning, prove a candidate, or authorize a phase. Fill the initialized outcome, authority pointers, candidate, gaps, and next action immediately. Authored Spec, Issue, Plan, change, and evidence documents remain draft until the relevant human or phase boundary accepts them. Under Auto, distinguish delegated acceptance from explicit human approval and retain the grant; protected memory still follows its exact authorization mechanics. File presence does not create work. Leave unused decision and Build records empty; their detailed templates apply when those operations are actually requested. Reference an existing approved ticket as authority rather than re-recording its approval as a new decision. Only a new human decision warrants a decision entry. Logs and pointers describe successful observed operations; a failed command must not be followed by an unconditional success claim. For Quick Build, keep brief Plan notes and current state in the existing Issue, index, or Build log. Do not create separate Issue, technical-contract, Plan, decision, or Acceptance records unless one is independently needed for authority, handoff, or distinct evidence. Record each fact once and link to it elsewhere; do not repeat candidate identity, authority, checks, findings, or exclusions across lifecycle files. Create documents from the assets linked by the phase references. Managed Markdown keeps immutable `id`, readable `code`, title/type/status metadata, and ordinary human-readable bodies. Use the CLI to create or validate records; edit bodies with the host's normal file tools. Never use a generic update to fabricate or overwrite a human decision. ## Handoff Give each accountable owner or helper the smallest complete packet: ```text OUTCOME: bounded result and stopping boundary WORKFLOW: selected workflow, depth, control, assignment, and applicable staffing triggers AUTHORITY: accepted sources, decisions, scenarios, and project rules CANDIDATE: exact candidate/base or not applicable SEAMS: affected behavior, shared ownership, and integration obligations IMPACT: signals -> affected obligations -> selected checks -> gaps, when existing behavior can be affected SOURCES: verified repository or external anchors WRITES: owned paths or read-only PROOF: runnable setup, checks, and expected observations GAPS: unavailable evidence and unresolved facts RETURN: changed behavior/artifact, candidate, evidence, integration concerns, gaps ``` When a defect outside the owned writes prevents assigned proof, return `BLOCKED_BY_SCOPE` naming the defect, the authority it blocks, the minimal repair, and why no in-scope route exists. An owner may instead make that repair itself when it is required to produce assigned proof, is reversible, changes no accepted meaning, and is reported in the return. Every other write outside the owned paths is a violation. This reconciles two rules that otherwise contradict each other: never claim a check that was not run, and never write outside the grant. An Engineer whose assigned proof needs a broken test script it does not own, and a Designer whose template asks for a companion record its assignment did not grant, both use this route rather than choosing silently between the two rules. Passing local checks do not imply integrated Review or Acceptance. On resume, read the index, independently retained accepted baseline and approved change, their human source, applicable Spec-apply receipt, current canonical files, latest actual candidate and Build verdict, Acceptance evidence, and focused decision links. Treat matching receipt bytes as already applied and diverged bytes as a gap; never replay writes or promote the mutable working copy into accepted authority. Load older log entries only for a named unresolved fact. Repair stale projections from authoritative sources. -
reporting.md 4 KB
# Reporting and failure routes Lead with the achieved result and requested boundary. Name the exact candidate or artifact, accepted sources, actual evidence, material gaps, and next required action. Link direct records instead of reproducing long histories or agent chatter. Use these dispositions: - `PASS`: the exact artifact or candidate satisfies this phase's contract. - `REVISE`: a bounded correction inside accepted intent is required. - `FAIL`: actual acceptance demonstrated a required behavior or constraint fails. - `RETHINK`: the mechanism or causal explanation must change before more edits. - `READY_FOR_USER`: a human decision, semantic authority, or ungranted external action is required. - `BLOCKED`: access, environment, dependency, or required evidence prevents an honest result. - `INCONCLUSIVE`: the current acceptance seat cannot judge and a replacement or different capability may still resolve the gap. - `STOPPED`: the user stopped the work. Review PASS means no admitted blocking finding at the inspected candidate. Acceptance PASS means the actual Review-passed outcome met applicable acceptance evidence. Neither means Ship occurred. A structural document check establishes structure, not semantic correctness or runtime behavior. For work in progress, report `Done`, `Evidence`, `Gaps`, and `Next`. Omit empty sections, unchanged status, prompt transcripts, token counts, raw agent rosters, and speculative follow-on work. At a human gate, follow the [gate briefing](workflows.md#gate-briefing). That guidance is chat reporting only. Do not treat a path, heading list, or loop ID as the briefing, and do not save it as a loop record. At completion, use the same clarity for actual changes, material exceptions, preserved behavior, proof, gaps, and the next action. The examples below are shapes to adapt, not required text, headings, word counts, or tables. ## Chat briefs **Decision brief example:** “The proposal lets a member reopen a completed task from its row. **Added:** Reopen returns the task to the active list. **Preserved:** completion history and permissions. The draft also proposes deleting history after 30 days; that is a separate retention change. I recommend keeping history because no accepted source authorizes deletion. The interaction has a prototype; browser and assistive proof remain open. Choose (1) approve Reopen, which adds the action, and (2) retain history or authorize a specific retention rule. The exact Product revision and prototype show the detail.” If the user answers only (1), (2) stays open. Link the actual revision and prototype in a real brief. For consequential wording or behavior changes, an optional compact comparison can show `Item | Current | Proposed | What changes`. Use the last column to say why the correction or removal matters, not merely repeat the new text. Keep every material choice and its recommendation in the surrounding chat; the table is a reading aid, not another artifact or a required format. **Change brief example:** “Reopen now works from the task row. **Changed:** the action and active-list update. **Exception:** retention did not change; the separate choice remains open. **Preserved:** history and permissions. The focused checks passed on the exact candidate; browser acceptance was not run, so complete Acceptance is still open. The Review record has the verdict. Next: decide retention or request acceptance.” Use actual observed evidence and exact links to the candidate and Review; do not imply a proof level that was not run. ## Explain `Forge explain <artifact or change>` is a direct read-only operation. Retrieve the named artifact, its exact revision, applicable accepted sources and decisions, and available candidate or proof records. Explain the current proposal or actual result in chat using the brief shape above: material changes and preserved meaning, accepted versus open choices, evidence and limits, and exact source links. Name a source gap when one remains. Do not initialize a loop, ask for Launch approval, edit records, or turn an inference into a decision. Stop after the explanation. -
research.md 1.2 KB
# Explore Explore investigates an idea, existing system, prior art, defect signal, or decision before or during another phase. It is directly callable and does not require a managed loop, mandatory artifact, proposed change, Build, or Ship. Use the professional perspective that owns the question. A Researcher leads source and market evidence; an Engineer traces code or runtime behavior; a Product Manager investigates user/problem framing; a Designer studies experience patterns; an Architect examines durable system constraints. Delegate independent questions when parallel evidence helps. State the question, decision it may inform, accepted context, search boundary, evidence standard, and stop condition. Retrieve repository facts and current primary sources before asking the user. Separate observation, sourced fact, inference, uncertainty, and recommendation. Cite sources directly and expose gaps. An Explore result may recommend Spec work, a prototype, or no action. A prototype is evidence for a decision or an explicitly scoped deliverable; it is not authority for production implementation. Record consequential conclusions only within the user-authorized document scope. Stop when the requested question is answered. -
review.md 7.3 KB
# Independent Review Review is independently callable and normally composed inside Build. One separate Reviewer stays read-only, pins the exact candidate/base, covers applicable dimensions with required Judge assignments, and owns one integrated verdict. The Reviewer never edits, delegates repairs, creates requirements, or turns findings into Plan Issues. Direct Review stops at its report. ## Bind and select Establish the review purpose and applicable current obligations using the shared [Reviewer guidance](../../../agents/reviewer/instructions.md). Carry that purpose to judges with the authority packet: a deferred delta is not automatically a completion claim, and claimed completion must cover the approved outcome. Start from the independently retained accepted baseline plus approved delta, their authority sources, current canonical result, decisions, Plan or bounded assignment, applicable repository harness, exact candidate/base including dirty state, verified source anchors, runnable proof, and known gaps. Inspect the actual candidate before trusting author conclusions, document-only receipts, or earlier PASS labels. Check the exact source and scope of each material addition, removal, or stronger guarantee. A question, edited Spec, green check, or earlier Review is not approval. If an accepted scenario disappeared because its code path appears dead, retain it as unresolved until a scoped human decision or valid grant covers the removal. Re-resolve the harness when a trace enters another subtree or standards domain. Use [Review judges](judges.md) to select Code Review, Design, Quality, Spec, and Craft and resolve each bundled, replacement, or disabled assignment. Record every dimension's applicability and selected source. Spec and Craft apply to every candidate; other dimensions follow the actual outcome. Small work narrows scope and report size, not required applicable coverage. Standards and proof belong to each dimension, not additional judges. ## Inspect, delegate, and preserve reports Choose staffing using [concrete workflow triggers](workflows.md#concrete-staffing). The Reviewer inspects undelegated dimensions directly with their selected rubrics. For each delegated dimension, use a clean-context read-only native subagent, blind to peer conclusions. Give it the [Judge contract](../../../agents/judge/instructions.md), selected skill or rubric, exact candidate/base and paths, accepted authority, verified anchors, allowed commands/tools, supplied proof, gaps, and stopping boundary. Code Review uses the bundled sibling leaf skill by default and never starts a panel. Run independent Review Judge assignments in parallel where resources permit; serialize shared browser use with explicit ownership. This is Review inspection, not Spec authoring. If nested spawning is unavailable, the host coordinator dispatches the Reviewer's required assignments. Required delegation, independence, access, or proof gaps prevent judgment; never label the Builder's self-review an independent return. Each judge returns a dimension verdict and its own report: dimension, selected skill/source, candidate/base and path scope, inspected authority, checks and observations, findings, and gaps. Use the dimension section in [the review template](../assets/review.md), or the leaf's report template. The record-owning coordinator persists each return as a distinct labelled section or linked managed document through existing CLI mechanics; judges never write records. Preserve delegated originals beside the Reviewer's disposition. Reviewer-owned dimensions can use concise evidence-backed table entries or sections in the same report, sharing the boundary and checks. Identify their owner honestly; do not invent separate judge reports or duplicate the packet for each dimension. ## Integrate and challenge Actively try to falsify candidate claims, then apply the conservative admission bar in the judge guidance to every allegation, including replacement-skill returns. Check authority, candidate binding, real reachability, evidence or causal trace, material consequence, and severity. No quota, manufactured nits, personal taste, speculative scale, unrelated debt, or unsupported redesign. Explicit material standards remain binding. Required proof gaps stay visible and are not invented defects or inferred success. Merge duplicates, route concerns to their owning dimension, and disposition conflicts from evidence rather than votes. Preserve sufficient evidence for every applicable dimension; a passing dimension cannot conceal a failed one. Check the managed-artifact contract for accompanying software records without adding Quality. Use [Craft](judges.md#craft-rubric) to challenge both needless machinery and missing guards at real present boundaries. A finding is evidence to assess, not an order to add another layer. Judge whether the existing owner can meet the accepted result and why a proposed new mechanism is necessary. After a narrowed scope, reject Review work that serves only the superseded design. Challenge the Builder's preservation scope using [knowledge guidance](knowledge.md). Check signals against real consumers and semantics, name affected and preserved obligations, and require selected checks plus explicit gaps. Expand beyond paths for exported contracts or actual behavior; do not demand full-product replay for a narrow patch. Review actual canonical Spec/KB bytes beside code and tests. Intended target and observed implementation stay distinct; KB retrieval, receipt matching, and structural validation cannot prove compliance. ## Verdict and boundary - **P0:** demonstrated accepted-Spec/decision violation or critical trust, correctness, security, privacy, data-loss, public-contract, or build-boundary failure. - **Pragmatic P1:** a current reachable trigger, material consequence, and scope-aligned correction are supported; deficient required proof is an explicit gap. - **P2:** useful nonblocking advice. Omit manufactured nits and preference. Return `PASS`, `REVISE`, `RETHINK`, `READY_FOR_USER`, or `BLOCKED`. PASS requires no unresolved P0/pragmatic P1 and sufficient current evidence for all required Review claims. Missing required evidence or independence blocks PASS. `REVISE` means supported correction is needed; `RETHINK` means the mechanism needs reconsideration; `READY_FOR_USER` identifies a consequential intent/authority choice; `BLOCKED` means required access, evidence, or capability prevents judgment. Disabled coverage and an explicit scoped human waiver follow the judge guidance; label exclusions, never imply they passed. Review PASS does not establish Acceptance. State the authority status of the intent you judged against. When it carries no recorded human approval, say so in the boundary and scope the verdict to fidelity to that draft. Unapproved intent is reported, not escalated: it is not a finding on its own, and it is not `READY_FOR_USER` when the loop record already shows the Coordinator routed that gate under a standing grant. Reserve `READY_FOR_USER` for an intent or authority choice nobody has made yet. On a changed repair candidate, review the complete accepted packet again and inspect prior dispositions without narrowing to a patch list. Reuse unaffected proof only with a candidate-bound reason. Record preservation scope, individual reports, disagreements, and reused or missing evidence in the integrated handoff. -
runtime.md 3.6 KB
# Runtime and delegation Forge runs inside one hosting coding agent and uses that host's native subagents. Forge describes the outcome, professional perspective, clean-context independence, write ownership, and evidence; the host owns spawning, scheduling, tools, and permissions. Forge has no provider adapter or subprocess agent fallback. If the host cannot provide required independent context or evidence, report the gap. ## Accountabilities - **Coordinator:** owns Launch, requested boundary, authority, current state, and phase composition using [workflows](workflows.md). - **Professional owner:** Product Manager, Designer, Engineer, Architect, Researcher, Reviewer, or QA perspective accountable for a phase result. - **Engineer:** owns tactical planning, implementation, required Worker delegation, integration, simplification, internal review, and repairs. - **Reviewer:** owns the read-only integrated candidate verdict in a separate context. - **Acceptance owner:** a clean-context QA professional exercises the actual outcome. - **Explorer / Worker / Judge:** temporary helpers. They investigate, produce a bounded outcome, or inspect one dimension; a Judge owns its dimension report and verdict, never integration or the final Review/Acceptance verdict. Use the [concrete workflow assignments](workflows.md#concrete-staffing). These are native subagent jobs, not multiple personas adopted by the Coordinator. A Quick ready Issue without additional triggers uses Engineer and Reviewer. Spec specialists follow [specialist sequence](workflows.md#specialist-sequence). Do not spawn Product Manager, Designer, and Architect together. Parallelize other work when it is read-only or writes do not overlap; one accountable owner integrates all returns. Keep useful subagents across repair follow-ups while their context stays focused. Judge Review independence by separate relevant context, read-only ownership, pinned authority and candidate, and checked evidence. A different provider, model family, or lineage is not required. Never claim clean context, browser access, or independence the host did not provide. ## Model selection Honor explicit user and host preferences, then inspect only models and capabilities the current host actually exposes. The host's current model is a sensible default. Choose proportionately: a fast economical model can extract a bounded fact, update a local mechanical seam, or run a focused check; stronger reasoning fits ambiguous architecture, cross-boundary integration, or a difficult Review. A small patch may use the current model throughout. An API and database contract change may assign stronger reasoning to the Builder and relevant Review lenses. A focused regression review may use a faster model when the authority, candidate, and reproduction are already crisp. Deterministic claims still come from tools and executed checks. An independent Reviewer may use the same model family as the Builder when the context and capability meet the Review contract. Do not invent model equivalence or availability, hard-code a provider default, or use maximum effort for every task. Model selection remains natural-language guidance. Model configuration is deferred. For Review, use the [five named dimensions and staffing](judges.md). The Reviewer covers dimensions directly or dispatches required Judges with clean, read-only contexts and the exact authority/candidate packet. Preserve delegated reports, record Reviewer-owned assessments, and resolve conflicts from evidence rather than votes. Staffing changes do not waive applicable coverage, required independence from Build, or Acceptance. -
ship.md 3.7 KB
# Ship Ship closes the authorized local outcome and performs only publication actions the user actually authorized. It starts from the exact Review-passed and Acceptance-passed candidate, comparison base, retained accepted baseline and approved change, current canonical files, applicable Spec-apply receipts, and explicit external-action authority. Before closure, check once that: - candidate/base still match Review and Acceptance; - required scenarios, NFRs, preserved obligations, and visual acceptance passed or have explicit blocking gaps; - selected authority, runtime inputs, canonical files, and applicable receipt hashes still match the reviewed candidate; and - each requested PR, merge, deployment, release, document publication, or other external action is explicitly authorized. Reconcile the exact candidate, human grant, Spec status, Build changes, Review and Acceptance results, and affected target prerequisites. A missing accepted clause or an unrun required check remains a gap, even if focused tests passed. If code depends on a new schema step, confirm that separately authorized operation has completed on the target before the dependent code serves; otherwise hold activation and report the missing prerequisite or authority. A release grant alone does not authorize an additive or destructive schema mutation. Follow the target repository's exact operation-and-target authorization rule and inspect destructive SQL where that rule requires it. Correct contradictions in existing records rather than creating a parallel release ledger. Run [Finish](finish.md) before publication when approved unapplied Spec/knowledge meaning or authorized existing-PR readiness remains. It reuses existing guarded operations and observed Git/PR state; it does not replace Build Review or Acceptance. Structural checks, receipt matching, or a clean tree do not replace either judgment. An exact inspected canonical-only delta produced by Finish's Spec apply does not by itself stale the implementation Review or Acceptance candidate. Record and inspect that the delta is limited to the reviewed canonical result. Any code, runtime, test, configuration, uninspected canonical file, or additional meaning change returns to the affected Review or Acceptance boundary before closure. Record one concise [ship.md](../assets/ship.md) closure with the accepted candidate, current candidate, comparison base, Review and Acceptance references, applicable Spec-apply receipts, publication actions, and limits. Normally accepted and final candidate are identical. Publication facts belong in this closure; a deployment timestamp does not require a canonical status edit or another review loop. If an authorized merge or rebase changes only Git identity, retain the historical verdicts under their original candidate, record the exact old-to-new relationship, and judge which proof remains applicable. Never relabel an old verdict. If source, runtime input, authority, canonical meaning, or accepted behavior changed, route the affected work to its owning Build, Review, or Acceptance boundary before closure. For an existing operation ID, inspect its retained receipt and current result hashes. Matching bytes are already applied; do not replay writes or invent another operation ID. Diverged bytes, malformed provenance, a missing Review/Acceptance reference, or a changed authority/runtime input stop the affected claim and name the owner who must resolve it. Execute only authorized repository or publication mechanics. A PR request does not imply merge or deploy; a merge request does not imply production release. Use `READY_FOR_USER` for an ungranted external action or unresolved human-owned meaning. Mechanical freshness success does not prove semantic fidelity, Acceptance, deployment, or publication. -
simplify.md 410 B
# Simplify is Build work Simplification belongs inside [Build](build.md), before independent Review, and is also directly callable as a bounded behavior-preserving Build operation. It is not a lifecycle phase. Prefer deletion, reuse, direct code, fewer concepts, and a justified no-op when the candidate is already focused. Any semantic change returns to accepted intent rather than entering through cleanup. -
spec.md 6.9 KB
# Spec Spec defines accepted intent and can stop with a useful draft. It owns discovery, context retrieval, informed questions, and the proposed change to standing meaning. It does not authorize Build or Ship. Start with accepted [Launch choices and workflow assignments](workflows.md). PM prepares a missing/unready Issue at either depth; Engineer assesses after that draft exists. Designer and Architect join under the shared triggers in that order, each waiting on the upstream artifact. ## Choose the smallest useful artifact - **Project:** Product Manager authors a concise PRD from [product.md](../assets/product.md). Add [design.md](../assets/design.md) when experience decisions matter and [tech.md](../assets/tech.md) when durable contracts, data, trust boundaries, migration, failure behavior, or material NFRs need early alignment. - **Issue:** reuse a ready Issue or have PM create/complete [issue.md](../assets/issue.md), including effort/complexity, uncertainty, depth, specialist assignments, and proof after Engineer assessment. Do not duplicate it into a project Spec or infer low complexity from its workflow name. - **Bug:** Engineer records expected/actual behavior, impact, available reproduction, and applicable scenarios in [bug.md](../assets/bug.md). Do not guess the cause. - **Design:** Designer defines flows, states, responsive and accessibility intent, and an identified mock or visual board using [design.md](../assets/design.md) and [visual.md](../assets/visual.md). For a visual change or look-and-decide request, follow [codebase-anchored design studies](design-studies.md) to produce a browsable single-page study with project-native frames and rendered evidence. Reuse an adequate accepted visual; do not create a board for every small patch. - **Work:** the relevant professional defines the deliverable, audience, goals, constraints, source standard, and proof in [work.md](../assets/work.md). Use [spec-change.md](../assets/spec-change.md) when proposed behavior changes standing requirements. Name additions, modifications, removals, preserved commitments, affected knowledge, source authority, and full Given/When/Then scenarios. Do not express a removal by omission or copy standing Spec into a second corpus. Use [knowledge guidance](knowledge.md) to carry only earned domain, data, runtime, process, operations, or design intent into proposed OKF concepts. State the preservation signals, affected obligations, selected checks, and gaps when the change can affect existing behavior. ## Authoring Retrieve relevant standing Spec, decisions, domain concepts, processes, interfaces, repository facts, and existing solutions. Missing coverage is a visible gap rather than a reason to block incremental adoption. Ask only consequential human choices that cannot be retrieved, and include a recommendation. Treat a question, possibility, analogy, or agent recommendation as open, not as authority for a stronger guarantee. Trace each proposed addition or removal to an exact accepted source or bounded Auto grant; otherwise label it proposed and keep the accepted baseline. A later answer does not retroactively turn an earlier question into approval. Correct mistaken source and dependent records in order. Do not force a fixed interview, exhaustive catalog, or empty sections. Do not add Spec files, feature flags, configuration, extra scenarios, or compatibility promises the human did not ask for. Delete unused template sections. Do not bury extra product or technical decisions inside a Spec to make it look complete. For a substantial Product, Design, Technical, or Work artifact, open with a short Summary, Context, and self-contained End State before earned detail. State the proposal, why it matters, and the observable or operational result and boundaries. Omit empty sections. A ready Quick Issue stays brief. First look for the existing owner or pattern that can deliver the outcome; new machinery must earn its cost under [Craft](judges.md#craft-rubric), including a first real safety boundary. Use `forge kb ask` to retrieve authority and existing vocabulary. Keep human decisions, accepted requirements, observations, and proposals distinct. A loop Spec records intent for the KB; it does not make that intent canonical or prove that the implementation satisfies it. Product intent uses PM judgment without an extra Product gate. In Guided, present new/materially revised meaning and obtain human approval before boundary review. In Auto, record the explicit grant and exercised delegated authority before the same review; do not label unseen text human-approved. Reuse accepted requests or artifacts when they cover current meaning. Boundary review checks fidelity, clarity, consistency, demonstrability, cost, and downstream usability; it cannot replace a human decision or authorize protected standing-Spec writes. After the applicable authority gate, a native Worker may prepare bounded outputs. A separate fast checker performs that same boundary fidelity check against the retained accepted baseline, approved change, scenarios, decisions, and source. Do not add a second lifecycle review or provider/model default. If the checker is unavailable or meaning is ambiguous, report the gap to the responsible owner; return newly consequential meaning to the human. Record proposed standing-Spec and knowledge meaning independently when the work earns either. Both are optional. The active repository owns its canonical memory, and a user-facing deliverable is not automatically knowledge. Spec records and approves the loop change; it does not routinely edit canonical Specs or knowledge. The explicit natural operation `Forge spec apply <change>` remains available with separate request or authority. Routine [Finish](finish.md) may invoke it at actual work completion, normally Build-or-later or after a general-work deliverable; direct Spec and Plan remain proposal-only. For behavior, assign stable scenario IDs and write explicit Given/When/Then: ```text Scenario: SCN-… Given <accepted starting state> When <observable actor action or event> Then <observable outcome> ``` Keep prototypes and mocks identified as decision evidence until the human accepts their meaning. Record accepted visual revision, states, and representative viewports so later Review and Acceptance can compare the actual result. ## Completion Return the artifact paths, accepted and open decisions, proposed Spec or knowledge meaning when present, active repository, preservation chain, boundary-check status, and next requested boundary. A direct Spec call stops here, including under Auto. In Guided delivery, brief the new/materially revised Spec in the conversation, link the exact draft, and stop before Plan; record human approval of that revision before boundary review. Auto follows its grant through ordinary gates and retains the same review. Follow [workflow authority rules](workflows.md) for consequential revisions, depth changes, and protected-Spec application. -
verify.md 5 KB
# Acceptance Acceptance exercises the actual outcome after independent Review. Use a clean-context QA professional for software or the relevant acceptance specialist for general work when there is a distinct outcome to exercise. Acceptance stays read-only on the candidate and does not prescribe implementation. The natural requests `Forge acceptance` and `Forge verify` enter this same phase; the `verify.md` filename and `verify/` evidence path remain stable compatibility names. Pin the Review-passed candidate/base and load accepted scenarios, NFRs, design revision, relevant decisions, environment/fixtures, runnable setup, and known gaps. If current independent Review is missing, changed, or unbound, first obtain a bounded Review of the same candidate. That Review does not itself prove acceptance. For a directly applied Spec, also retain the accepted baseline and approved delta as independent inputs; the current canonical file and matching receipt do not prove authority or implementation. Load the reviewed preservation scope. Exercise changed or new outcomes, affected unchanged outcomes, and material failure paths named by the obligations. Reuse unaffected proof only with a reason tied to the scope. A changed path list alone does not establish preservation, and every patch does not require full-product reverification. When a candidate changes only instructions or documentation and has no runtime, UI, or external outcome that Acceptance can exercise beyond exact-candidate Review and deterministic checks, reuse that evidence by reference. Do not dispatch a separate acceptance agent or create a standalone Acceptance record. State any unrun live-agent or provider behavior honestly; evidence reuse does not turn it into runtime proof. For each applicable item, record in [acceptance.md](../assets/acceptance.md): scenario/NFR, environment and candidate, action or command, expected result, observed result, `PASS | FAIL | NOT RUN`, and trace/output/visual link. Written tests, generated mocks, structural validation, source inspection, and prior labels do not replace required current runtime proof. Required unavailable proof blocks acceptance and stays explicit. Actively try to falsify consequential claims through current public inputs and real failure paths, then require authority, reachability, observed evidence, and material consequence before declaring a failure. No finding quota, manufactured nits, personal taste, speculative scale, or unrelated debt. Material accepted standards remain binding; missing proof stays NOT RUN rather than an invented runtime failure. ## Complete outcome Judge whether the integrated result realizes the accepted product or technical end state, including confirmed design, cross-Issue behavior, preserved standing commitments, and material regressions. Passing every listed Issue or scenario is not sufficient when the combined experience is missing or contradictory. Reuse current credible evidence; runtime contradictions outrank earlier green checks. Focused passing tests cannot make an unimplemented or unrun accepted clause PASS; mark that clause FAIL or NOT RUN and withhold complete Acceptance PASS. This is part of Acceptance, not an additional Product gate. A project checkpoint uses the same Review then Acceptance composition over its stated completed scope and names unfinished outcomes without claiming full-project completion. Acceptance exercises the obligations selected by the Builder and challenged by Review. It may use the KB to locate authority, but KB search, OKF validation, and history output never establish candidate compliance. ## Browser and visual acceptance For applicable UI work, use an actual browser against the identified candidate. Confirm URL/build identity, authentication, test data, browser ownership, states, and representative viewports. Exercise real interactions and inspect console, network, persistence, focus, keyboard behavior, semantics, responsive behavior, and regressions when relevant. Compare the rendered candidate with the accepted design/mock revision and states. Record images or traces through [visual.md](../assets/visual.md). Judge material fidelity, hierarchy, spacing, typography, alignment, clipping, overflow, contrast, interaction feedback, and responsive behavior. Code inspection is not visual acceptance; pixel precision applies only when accepted authority requires it. Use synthetic-user journeys to exercise accepted scope from specific goals, knowledge, permissions, and starting states. They are simulated acceptance or exploratory tests, not real user research, and cannot invent requirements. For a bug, rerun the original reproduction plus affected behavior. For a visual artifact, open/render it and inspect the actual output. For other general work, exercise or inspect the deliverable against its stated purpose and source standard. Return `PASS`, `FAIL`, `RETHINK`, `READY_FOR_USER`, `INCONCLUSIVE`, or `BLOCKED`. A material failure returns the complete accepted packet and evidence to Build, followed by affected Review and Acceptance. Use the shared finite repair count; never mark unrun evidence PASS. -
workflows.md 19.1 KB
# Workflows and Launch Read this before starting or resuming Forge work. Workflow identifies the outcome; depth follows effort, complexity, uncertainty, and risk. Control determines human pauses. These choices are independent and do not change the requested boundary. ## Launch Read enough of the request, supplied artifacts, current state, and target harness to choose the workflow and identify available capabilities. Before specialist dispatch or substantive artifact/source edits, brief the user in plain language per [gate briefing](#gate-briefing), then show a short bullet list: - Workflow: Project, Issue, Bug, or Work - Depth: Quick or Full - Control: Guided or Auto - Agents: selected role names - Boundary: requested final phase or deliverable and publication limits - Sequence: phases to perform and accepted artifacts to reuse - Gates: pending approvals, existing approvals, and decisions outside authority - Workspace: selected repository and actual branch/worktree, when relevant Show only the selected values, such as `Workflow: Issue`, `Depth: Full`, and `Control: Guided`. Never append subtypes, “recommended,” or rationale to those values. Use these names consistently: PM (Product Manager), Designer, Architect, Engineer, Reviewer, QA, Researcher, Worker, and Judge. Independence is an assignment requirement, not a role name: use Reviewer, not Independent Reviewer or Engineer Reviewer. These are prose names, not code enums. Never attach first names. After all bullets, write one short paragraph explaining the workflow, depth, and team choices: effort/complexity evidence, unresolved uncertainty, each specialist's responsibility, who starts next, and what the user can override. For Auto, cite the instruction granting it. List roles before dispatch and record actual host agent IDs afterward; show models/effort only when selected or exposed by the host. Spawn Spec specialists in [sequence](#specialist-sequence), not together. Future Worker counts depend on Plan. State the delegation rule at Launch, then show actual ownership and the integrating Engineer before dispatching Workers. **Guided is the default.** Present Launch and stop for the user to accept or edit the workflow, depth, team, and control. Lead with the [gate briefing](#gate-briefing) in the user's words, then the Launch list. An explicit current acceptance of an already displayed Launch satisfies this gate. Launch approval does not approve an unseen Spec or consequential Plan. Resume retains accepted choices without a new ceremony. Routine follow-ups inside the accepted assignment do not relaunch. **Auto requires an explicit instruction for this run**, such as “full auto” or “run autonomously through Acceptance.” Show Launch, then proceed through ordinary Launch, Spec, and Plan gates within that grant. Record exercised delegated authority and its source, never human approval of unseen text. “Build this,” “deliver this,” urgency, and silence alone do not select Auto. Independent boundary checks, Review, and Acceptance still run. **An instruction that does not clearly grant Auto is Guided.** When wording could be read either way, resolving it toward Auto decides on the user’s behalf whether a human ever sees the Spec, so present Launch and stop instead. A request to observe, supervise, or watch the run asks for visibility and grants no autonomy. Ask for the grant in one line rather than inferring it, and never cite an ambiguous instruction as the Auto source in the loop record. Both controls preserve accepted intent, host permissions, protected-Spec rules, and publication restrictions. Conflicts, new scope, unresolved consequential user choices, or actions outside the grant return to the user. Auto is not authority to apply protected standing Spec bytes without the required exact approval. Keep such proposals unapplied and hold dependent work when that authority is required; never fabricate a decision or use generic writes to bypass memory mechanics. Direct operations show only their own assignments and stopping boundary. Auto for Spec does not schedule Build. Mode changes govern subsequent work. Disclose material workflow, scope, team, or gate-policy changes before dependent work; Guided waits, while Auto follows its explicit grant. Depth changes still require the user's choice unless that choice was explicitly delegated. ## Gate briefing This is conversation reporting, not a new artifact. Do not write a briefing file, managed document, or Spec section for it. Every human stop is a short briefing the user can decide from, plus links to the exact artifacts for when they want depth. Do not assume they already read the Spec, Issue, Plan, Review, or log. Speak in the user's product language. Loop IDs, scenario codes, phase names, and harness jargon stay out of the briefing or appear only in those links. This applies at Launch, Spec, Plan, and any return for a decision, including `READY_FOR_USER`, new scope, and Auto conflicts. Auto still briefs when it actually pauses. Name the proposed result, every material addition or removal, important preserved behavior, risks and proof limits, and the exact choices with a recommendation and consequence. A generic reply cannot approve a material commitment omitted here; an explicit approval of the exact full revision retains its stated scope. If the human answers one choice, leave the other choices open. Give one clear next ask and links to the exact revision. Aim for about one page of chat; use more when the decision requires it. Group related changes, use verified quantities when useful, and show a representative screenshot or small comparison table only when it makes the choice easier. Keep implementation detail in the linked artifact. See the adaptable [decision and change briefs](reporting.md#chat-briefs). ## Depth **Quick** uses ready intent, brief Engineer Plan notes, implementation, local checks, Reviewer judgment, and repair. It is the Build/check/fix loop, not a waiver of preparation or proof. Acceptance runs when requested; Ship only when authorized. Recommend Quick when the outcome is clear, effort and complexity are low, accepted design/contracts suffice, and decisive proof is known. One ticket, few files, or urgency does not establish those conditions. A bounded prompt, skill, instruction, or documentation change with no new executable mechanism defaults to Quick. Full requires a concrete unresolved interaction, contract, or material risk that Quick cannot cover. If Forge's process is becoming larger than the requested change, name that concrete risk or downshift; process artifacts are not evidence of product complexity. **Full** performs needed Spec shaping, design/contracts, Plan, Build with Review, and Acceptance through the requested boundary. Recommend it for substantial effort, uncertainty, interactions, or risk. One Issue can require Full; multiple coordinated outcomes normally do. Full does not dispatch unused specialists. A current human request is a ready issue-like object when it states the intended outcome, relevant boundaries, and observable completion. Do not assign PM merely because no external ticket exists. When those elements are materially missing, the initial choice is provisional: PM completes the Issue, then Engineer supplies technical judgment. Designer and Architect join only under the triggers below, in that order. Reuse adequate estimates. Do not introduce an estimator, scoring system, or separate estimation document. Show changed recommendations before dependent work. The user's depth selection wins. If Quick cannot cover a demonstrated requirement, name the missing design, contract, or proof and seek a depth/scope decision, including under Auto unless depth changes were explicitly delegated. Never silently enlarge the team or omit required work. When the human materially narrows or simplifies accepted scope, reassess depth and staffing before further delegation. A direct instruction to use the simpler approach supersedes machinery that existed only for the broader design unless the human explicitly preserves Full depth. Superseded artifacts and assignments do not trigger specialists, expanded Review, or additional gates. At every depth, understand the actual flow and accepted outcome, then choose the first sound route: no change, existing owner or pattern, standard library, native platform, installed dependency, then the smallest new mechanism. The target harness may add technique, but cannot weaken accepted meaning or proof. Apply the same simple-first judgment in Spec, Plan, Build, repair, and Review; it creates no extra pass or form. [Craft](judges.md#craft-rubric) defines when complexity is earned. ## Workflow sequences The Coordinator owns conversation, routing, authority, and progress. The following assignments are actual native subagent jobs, not personas loaded into the Coordinator. Retain continuing authors and separate contexts for judgment. All sequences stop at the requested boundary and reuse applicable accepted artifacts. | Workflow | Spec and Plan | Build | Acceptance | | --- | --- | --- | --- | | Project | Multiple outcomes need shared decisions or integration. PM owns product scope and outcome criteria first. Designer follows when experience is triggered. Architect follows with technical project scope/contracts after those upstream artifacts exist. Mixed projects still use this order, not simultaneous authoring. Engineer owns strategy, dependencies, integration, and outcome Issues with PM-authored product criteria. | Engineer assigns Workers to separable bounded outcomes, integrates, and repairs the whole candidate. Reviewer judges that candidate. | QA exercises integrated outcomes, Issue interactions, and affected existing behavior in a separate context. | | Issue | One item at any effort/complexity. Reuse a ready Issue; otherwise PM authors/completes it, then Engineer assesses. Quick uses brief Plan notes. Full resolves required design, then contracts, then strategy, in that specialist order. Keep this on the Issue unless separate artifacts improve the handoff. | Quick uses Engineer and Reviewer. Full adds the triggered specialists in sequence and Workers only for separable outcomes, under one integrating Engineer. | QA proves the changed outcome and affected regressions, including required design and contracts. | | Bug | Observed expected/actual mismatch. Engineer owns the bug record, reproduction, falsifiable hypotheses, and distinguishing checks. A reported cause is not established fact. Hotfix changes urgency, not responsibilities or truth. | The same Engineer reproduces, diagnoses, repairs the shared cause, and checks affected callers. Reviewer judges repair and preservation. | QA proves the original reproduction no longer fails and exercises affected behavior. Unrelated green tests are insufficient. | | Work | A bounded non-software deliverable. Researcher authors evidence work, Designer visual work, or the applicable professional authors the artifact and its production/proof approach. | The author produces the artifact; Reviewer in a separate context checks claims, completeness, and craft with the applicable professional instructions. | A separate acceptance assignment inspects/exercises the final artifact against purpose, sources, and format. Software/browser tests apply only when needed. | Feature, improvement, polish, technical task, and patch select Issue, never a compound display label. A standalone mockup selects Work; a mock deciding a product experience remains within that product's Spec. Ship reuses the responsible owner for current-evidence checks, closure, and only authorized publication. There is no mandatory Ship agent. Project Workers receive outcome boundaries, shared contracts, owned writes, and proof. Run dependency-ready disjoint work together; serialize shared writes. Worker returns add no gates. An Issue inside a Project reuses that Project's team and acceptance strategy instead of recursively launching a complete Project. ## Concrete staffing Apply these triggers to the requested work, not workflow name or file count. | Condition | Assignment | | --- | --- | | Issue lacks a ready Issue or issue-like object | PM authors/completes the Issue first. Engineer assesses effort after that draft exists, at either depth. | | New or materially revised journeys, visual direction, or interaction design | Designer authors that Spec portion. Straightforward reuse of accepted design needs no new design assignment. | | New/changed shared API/event contracts, data ownership, trust boundaries, migration strategy, or cross-system recovery | Architect resolves contracts before dependent implementation. A restorative Bug leaving contracts intact does not trigger new architecture work. | | A Spec decision needs missing external evidence, competing approaches, or prior art | Researcher investigates named questions with sources and limits. Local tracing remains with Engineer or Architect. | | Full implementation has separable bounded outcomes | Engineer delegates Workers, shows ownership/sequencing, and retains integration. This governs both Issue and Project. | | Issue or Bug reveals multiple independently accepted outcomes requiring coordination | Propose Project with evidence; preserve usable work. | | Full candidate spans multiple implementation outcomes, or a separate Designer or Architect assignment authored a design or contract document whose commitments this implementation must satisfy | Reviewer dispatches one Judge per applicable dimension and integrates original reports. | | Issue or Bug changes authorization, tenancy, persistent-data integrity, a public contract, or cross-system recovery, without the broader Full condition above | Reviewer dispatches separate Code Review and Spec Judges and directly covers remaining applicable dimensions. | | Neither expanded-Review condition applies | One Reviewer covers every applicable dimension directly in one compact report. | Answer the second clause of the first row from the loop record rather than by inference: there is a separate Designer or Architect assignment, and it authored a document this candidate had to satisfy. One condition without the other does not fire it. A Designer who only reused accepted design, or an Engineer who recorded contracts inside its own Plan, is not a separate authoring assignment. Two Reviewers reading the same record should reach the same staffing, so do not expand coverage for defensibility when the record does not show both halves. Superseded assignments and documents never satisfy an expanded-Review trigger. A narrow guidance-only candidate uses one Reviewer for all applicable dimensions unless the current candidate still contains multiple implementation outcomes or a concrete high-risk contract seam. When both expanded-Review triggers apply, the Full rule wins and covers every applicable dimension, including Code Review and Spec. Dimensions remain Code Review, Design, Quality, Spec, and Craft; see [judges](judges.md) for applicability, rubrics, and replacement/waiver rules. Explicit user staffing choices take precedence; any coverage waiver remains visible. If native nesting is unavailable, the Coordinator dispatches required assignments on the owner's behalf. Missing required agents, separate context, or proof capability is a gap that holds dependent work, not permission for author self-Review or self-Acceptance. ## Specialist sequence Triggered Spec specialists run in dependency order. Listing them at Launch is not permission to spawn them together. 1. Product Manager authors product intent or the missing Issue. 2. Designer authors experience only after that product intent exists. Design is downstream of product. 3. Architect authors contracts only after product intent exists, and after design when design was triggered. Architecture is downstream of product and design. 4. Engineer assesses the Issue after the PM draft, then Plans and Builds after the required Spec artifacts exist. Do not run Product Manager, Designer, and Architect in parallel. Later work needs the earlier artifact; simultaneous authoring invents conflicting scope. Parallelize other work when it is read-only or writes do not overlap. One accountable owner integrates all returns. ## Spec and Plan gates In Guided, brief a new/materially revised Spec in the conversation, link the exact draft, and wait before dependent Plan or Build. After approval, record source/revision and run its independent boundary review. A consequential new Plan is briefed and approved before its boundary review and Build. A boundary review cannot make a new human decision; consequential revisions return to the gate. In Auto, the same jobs/checks run within the cited grant without ordinary human pauses; record delegated progression honestly. When Auto does pause, still brief. Accepted artifacts satisfy their gate when identity, approval, and relevance are recorded. Direct Build over accepted intent authorizes reversible Engineer tactics: brief faithful Plan notes create no extra human gate or planning team. Consequential strategy outside that authority requires the appropriate control/authority gate. The Quick Issue sequence is Launch → reuse a ready Issue or PM prepares it then Engineer assesses → settle new intent and changed depth → Engineer's brief Plan and Build → Reviewer → requested QA Acceptance → authorized Ship. Full shapes Spec in order: Product Manager, then Designer if triggered, then Architect if triggered; then resolves consequential Plan and coordinates Build with Review and requested Acceptance. Plan remains a job, optionally notes on the Issue or under `spec/`. Review is inside Build; `Forge verify` selects Acceptance. There is no extra Verify phase. ## Example: accepted small Issue - Workflow: Issue - Depth: Quick - Control: Guided - Agents: Engineer, Reviewer - Boundary: Build - Sequence: Spec (reuse) → Plan (brief notes) → Build (including Review) - Gates: Launch approval; new intent or consequential strategy changes - Workspace: the selected repository and actual worktree branch The Issue defines the sidebar-label change and acceptance criteria. Effort and complexity are low, accepted design suffices, and a focused check proves the change. Engineer starts with brief notes and builds; Reviewer checks the result separately. You can change depth, team, or control before starting. Guided waits for Launch approval; Acceptance and Ship remain outside this request. At that Launch stop the briefing names the sidebar-label change, what stays the same, and the ask to start. It does not lead with loop or phase jargon. ## Example: an instruction that does not grant Auto The user writes, “orchestrate a build of this and let me watch how it goes.” That asks for delivery and for visibility, and it grants no autonomy, so it is Guided and the Spec gate stands. - Workflow: Issue - Depth: Full - Control: Guided - Agents: PM, Engineer, Reviewer - Boundary: Build - Sequence: Spec → Plan → Build (including Review) - Gates: Launch approval; the Spec gate before Plan - Workspace: the selected repository and actual worktree branch Present Launch and stop. Do not record the instruction as an Auto grant, and do not read the request to watch as delegated authority over unseen intent. If the user then says to carry on without stopping, that is the grant, and the loop record keeps its exact words.
-
-
SKILL.md 16.5 KB
--- name: forge description: "Drive a software or general-work outcome through Forge's composable Spec, Plan, Build, Acceptance, and Ship lifecycle. Use when the user explicitly asks to use Forge, asks Forge to explore, spec, plan, build, review, accept, verify, simplify, finish, ship, reconcile a Spec change, or maintain Forge knowledge. Direct phase requests stop at that boundary; importing a ticket, exploring, specifying, or planning never implies Build or Ship authority." --- # Forge <activation> Activate only when the user explicitly invokes Forge or the caller identifies this skill. Do not infer Forge from an ordinary request to build, review, plan, research, or write a document. Natural agent requests are the public interface: “Use Forge to plan this Issue,” “Forge run acceptance on this candidate in the browser,” “Forge verify this candidate,” or “Run Forge through delivery.” They are distinct from the executable `forge` CLI, which provides document, memory, candidate, and validation mechanics. Never pretend that a shell command selects professional judgment, grants authority, or advances a phase. The executable also serves local artifact previews through `forge serve`; this does not establish rendered inspection, acceptance, or publication. </activation> For an explicit direct Plan, continue with [Plan](references/plan.md), applying the host's teammate and persistence mapping. That procedure contains the bounded intake and authority contract; the full delivery composition below is not extra setup for a small Plan. <setup> Read the root and applicable nested `AGENTS.md` files in the target repository, then follow only their relevant links. The target harness owns its languages, frameworks, package manager, architecture conventions, test commands, and deployment rules. Retrieve those choices from its instructions, manifests, and existing code; do not import Forge's own Bun toolchain or another repository's stack. When evidence is missing, identify the gap rather than inventing a project standard. Pass the applicable rules to helpers and use them in Review and Acceptance. Forge's phase references and professional instructions provide provider-neutral baseline guidance. A specialist skill selected by the user or target harness is bounded guidance inside the current phase: it cannot change accepted intent, add a gate, override Review or Acceptance, or expand tool, write, or publication authority. If a selected specialist is unavailable, disclose the gap. Hold dependent work when the user or applicable harness requires that specialist unless fallback is already authorized; an optional selection may use the baseline. Never claim that the baseline ran the named specialist. Use the available professional instructions for the current job from [the Forge agent catalog](../../agents/README.md): Product Manager for product intent, Designer for experience, Engineer for implementation and technical judgment, Architect for durable contracts, Researcher for sources and knowledge hygiene, Reviewer for candidate judgment, and QA for acceptance. Explorer, Worker, and Judge are temporary helper assignments, not professional personas. Read [runtime and delegation](references/runtime.md) before assigning subagents and [authority and state](references/protocol.md) before creating or resuming a managed loop. Use the [CLI mechanics guide](references/cli.md) only when a mechanical operation is needed. For optional knowledge topics and proportional preservation, use [knowledge guidance](references/knowledge.md). </setup> <launch> Read [workflows and Launch](references/workflows.md) before starting or resuming. It owns Project/Issue/Bug/Work selection, Quick/Full depth, concrete native-agent assignments, and Guided/Auto control. Present the selected names in plain bullets and one rationale paragraph before specialist dispatch or substantive edits. Guided is the default: stop at Launch for acceptance. Explicit Auto proceeds within its cited grant, never by inventing human approval. An accepted Launch is reused on resume; direct phases retain their requested boundary. </launch> <contract> Full delivery accounts for exactly: ```text Spec -> Plan -> Build -> Acceptance -> Ship ``` Depth, staffing, artifacts, and proof vary; the phases do not disappear. Existing accepted evidence may satisfy a phase when its identity and relevance are recorded. Spec includes intake and discovery. It records proposed meaning and approval but does not routinely edit canonical Specs or knowledge. The direct natural operation `Forge spec apply <change>` remains available when explicitly requested. Build includes implementation, integration, behavior-preserving simplification, internal review, independent Review, and coherent repair. Acceptance exercises the Review-passed candidate. Ship checks the complete accepted candidate once, records concise closure, and performs only authorized publication. Each phase is directly callable and stops at its named boundary. Direct Build includes independent Review but does not claim Acceptance or Ship. Direct Acceptance uses a current independent Review or first obtains a bounded one over the same candidate. Explore, Review, Simplify, Explain, Finish, Spec apply, the legacy natural wording Spec merge, and knowledge maintenance are also direct entries; they do not manufacture completion of the five-phase lifecycle. </contract> <approval_gates> Follow the [workflow gates](references/workflows.md#spec-and-plan-gates). In Guided, full delivery stops when Forge authors a new or materially revised Spec or consequential Plan. A later terminal boundary is not artifact approval. - **Guided Spec gate:** brief the change in the user's words, link the exact reviewable Spec draft or revision, then stop with human approval as the next action. Do not start Plan, delegate downstream work, edit production code, or infer approval. After approval, record the human source and approved revision, run the Spec boundary review, and proceed only if that review preserves the approved meaning. A consequential revision returns to this gate. - **Guided Plan gate:** brief the strategy in the user's words, link the exact consequential Plan, then stop before Build. Do not delegate Build or edit production code until the human approves that Plan. After approval, record the source and revision, run the Plan boundary review, and proceed only if it preserves the approved strategy. A consequential revision returns to this gate. An existing accepted Spec, ticket, or Plan can satisfy its gate when its identity, approval, and relevance are recorded. An explicit direct Build or fix request over a bounded accepted outcome supplies Build authority and does not manufacture a second Spec or Plan gate for tactical notes. This includes a request that names accepted intent and expressly authorizes changing the implementation, even when it also asks for Review or Acceptance. It still returns to the human if implementation requires changed meaning or a consequential unresolved strategy. Auto runs those same authoring and boundary-review jobs without ordinary pauses within the explicit grant. Record delegated authority, not approval of unseen text. Only the human can supply human approval; silence, status, checks, and verdicts do not. Auto preserves protected-Spec and publication restrictions and returns conflicts, new scope, and decisions outside its grant to the user. </approval_gates> <routing> Select the workflow and depth using [workflow definitions](references/workflows.md). The user's explicit choice wins. A clear current request can be the ready issue-like object; PM prepares only missing product intent. Issue does not mean small. Engineer assesses after intent exists. Designer then Architect join under the concrete triggers, in that order, before dependent implementation. Route direct entries as follows: - `explore` -> [Explore](references/research.md) - `spec` or `spec design` -> [Spec](references/spec.md) - `plan` -> [Plan](references/plan.md) - `build`, `fix`, or `simplify` -> [Build](references/build.md); bugs also load [bug diagnosis](references/debug.md) - `review` -> [Review](references/review.md) - `explain <artifact or change>` -> [read-only Explain](references/reporting.md#explain) - `acceptance`, `verify`, or `verify browser` -> [Acceptance](references/verify.md) - `finish` -> [Finish](references/finish.md), an actual-work-completion reconciliation operation inside Forge rather than a sixth phase - `ship` -> [Ship](references/ship.md) - `spec apply`, legacy natural wording `spec merge`, or `kb ask|add|update|remove|verify|history` -> [Spec and knowledge memory](references/memory.md) For an unqualified “Forge this” request, determine whether the user requested one boundary or full delivery. Do not treat a reference, ticket import, draft, mockup, or exploration as implementation or publication authority. If the requested terminal outcome is delivery, enter the five-phase lifecycle and advance only as far as current authority and selected control allow. Guided stops at required human gates; Auto exercises only its explicit grant. </routing> <authority> Apply authority in this order: 1. Current human instruction and recorded human decisions. 2. Accepted standing specification plus an explicitly approved change. 3. Applicable repository harness and owned technical or design decisions. 4. The accepted Plan or direct bounded assignment. 5. The exact candidate and current observed evidence. 6. Findings, logs, proposals, and descriptive knowledge. Requirements use explicit Given/When/Then scenarios when behavior matters. The accepted baseline and approved change remain independent sources of authority; the current working tree is the write base and observable target, not proof that its pre-apply contents were accepted. Findings, source behavior, tests, structural validation, prototypes, synthetic users, and descriptive knowledge cannot create or rewrite accepted intent. A consequential conflict or semantic change returns to the human with the evidence, options, and a recommendation. Reversible tactics remain with the accountable professional. Questions, possibilities, analogies, and recommendations remain proposals until an exact human answer or bounded Auto grant resolves them. A generic approval of an incomplete chat brief covers only disclosed material choices; an explicit approval of an exact full revision retains its stated scope. Follow [authority and records](references/protocol.md) when recording either. Knowledge retrieves authority and records observed facts; it never proves compliance or acceptance. </authority> <composition> <step n="1" name="Establish the requested boundary"> Identify the requested phase or terminal outcome, workflow, depth, accepted sources, current state, and authority gaps. For a managed delivery loop, create or resume the small record described in [protocol](references/protocol.md). Ask only about consequential choices that cannot be retrieved or inferred safely. When a change can affect existing behavior, record the compact preservation chain of signals, affected obligations, selected checks, and gaps. During Spec, record and approve proposed meaning without routinely editing canonical Specs or knowledge. Spec and knowledge remain optional and independent; the active repository owns them and a deliverable is not automatically memory. Apply Guided/Auto gates from the workflow reference. The requested terminal outcome alone does not let the agent approve its own artifact. </step> <step n="2" name="Run the phase at earned depth"> Load only the routed phase reference and relevant professional instructions. One accountable owner integrates the phase result. Dispatch the concrete workflow assignments in [specialist sequence](references/workflows.md#specialist-sequence); loading their personas into the Coordinator does not satisfy them. Keep write ownership disjoint or serialized and return a compact handoff with authority, candidate, proof, and gaps. </step> <step n="3" name="Protect the candidate"> One Engineer owns a software candidate, tactical planning, required Worker delegation, integration, simplification, internal review, and repairs. A separate Reviewer owns the independent integrated verdict. The Reviewer selects the applicable [dimensions and staffing](references/judges.md), resolves user/harness replacement or disable choices, and covers them directly or delegates focused clean-context read-only judges. Spec and Craft apply to every candidate; Code Review, Design, and Quality follow the outcome. One compact report can cover small work; preserve delegated returns when used. The Reviewer checks evidence and integrates judgment, never votes. Staffing does not reduce coverage. Missing required independence or evidence remains a gap. Independence depends on separate relevant context, authority, candidate binding, and checked evidence, not provider or model lineage. </step> <step n="4" name="Repair coherently and stop finitely"> Admit demonstrated accepted-intent violations as P0 and evidence-supported defects with a plausible current trigger, material consequence, and scope-aligned remedy as pragmatic P1. P2 advice does not extend the loop. Return the whole accepted packet to the Builder, group symptoms by shared cause, repair the coherent outcome, and reassess affected Review and Acceptance evidence against the changed candidate. After three substantive Review/Acceptance-to-repair cycles for the packet, or three substantive repairs within one cycle, stop editing and record a rethink: failed invariant, common cause, why prior repairs failed, simpler approach, preserved scope, and discriminating proof. Have an independent Engineer challenge it. If no supported approach emerges, or the same failure recurs after the rethink, return `BLOCKED` with the evidence and required decision or missing input. Never relax accepted intent or rename the candidate to reset the count. </step> <step n="5" name="Close only the authorized boundary"> Write concise human-readable artifacts from the linked templates, validate managed identities and references, and report actual proof. Carry earned domain, data, runtime, process, operations, or design intent into the canonical proposal during Spec and complete factual observations before Build Review. A direct phase ends there. Full delivery proceeds only with authority for the next phase. Ship never implies merge, deployment, release, or publication authority the user did not grant. </step> </composition> <reporting> Use [reporting and failure routes](references/reporting.md). At a human gate, brief in the user's words before linking artifacts. Keep those links. Lead with the result, exact phase/candidate, evidence, gaps, and next required action. Use the owning phase's defined disposition; do not promote local checks into independent Review or actual acceptance. </reporting> <checklist> - Explicit Forge activation and exact requested stopping boundary - Spec, Plan, Build, Acceptance, and Ship all accounted for in full delivery - Launch shown with a plain-language briefing, then the Launch list; Guided acceptance or explicit Auto grant recorded - New Spec and consequential Plan gates brief the change, then link artifacts; human approvals and exercised delegated authority remain distinct, with source and revision - Workflow/depth and concrete agent assignments followed; a clear current request can satisfy Issue readiness; PM, Designer, and Architect join only when triggered - One accountable Builder and a separate integrated-candidate Reviewer - Current candidate/base, authority, source anchors, runnable proof, and gaps - Given/When/Then scenarios preserved where behavior matters - Review distinct from Acceptance; required UI proof uses an actual browser - Synthetic-user scenarios remain simulated acceptance within accepted scope - Bug work tests hypotheses and proves the original reproduction - P0/pragmatic-P1 repair is coherent; P2 does not extend work; finite rethink stop - Spec and knowledge changes preserve an independent accepted baseline, approved delta, source provenance, exact result, and human authority - Preservation scope records signals -> affected obligations -> selected checks -> gaps - Builder proposes preservation scope, Reviewer challenges it, and Acceptance exercises affected unchanged plus changed or new outcomes - KB retrieval and structural checks are never reported as compliance proof - CLI used only for actual supported mechanics; no invented commands or flags - Finish records actual applied, skipped, persisted, and PR outcomes without implying Build, Acceptance, Ship, or publication authority </checklist>
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.