# How to Compound Feedback with Plannotator Source: https://docs.plannotator.ai/code-context/compound-with-plannotator Use Plannotator's local compound skill to find repeated plan-review feedback and turn it into review instructions backed by your own archive. Plannotator's local `plannotator-compound` skill analyzes your saved plan-review history and produces a report of recurring feedback patterns. You can then turn well-supported patterns into instructions for future planning sessions. The skill works with files already on your computer. It reads denied-plan files under `${PLANNOTATOR_DATA_DIR:-~/.plannotator}/plans/` when they are available. If that archive has no denied plans, it can fall back to Claude Code `ExitPlanMode` outcomes under `~/.claude/projects/`. A four-step diagram shows reviewed plan feedback, a pattern report, a maintained instruction, and the next planning session. A four-step diagram shows reviewed plan feedback, a pattern report, a maintained instruction, and the next planning session. ## Install the skill The compound skill is an optional extra. Install the extra Plannotator skills with the [Skills CLI](https://skills.sh/): ```bash theme={null} npx skills add backnotprop/plannotator/apps/skills/extra ``` Run the skill from an agent that supports installed skills: ```text theme={null} /plannotator-compound # Claude Code $plannotator-compound # Codex ``` Kiro CLI receives the extra skills through the normal Plannotator installer. ## What the skill reads The first source is the local Plannotator plan archive: ```text theme={null} ${PLANNOTATOR_DATA_DIR:-~/.plannotator}/plans/ ``` The analysis reads `*-denied.md` files. Each denied file contains the plan and the feedback returned during review. It ignores separate annotation files so the same feedback is not counted twice. Approved plans are counted for summary statistics, but their contents are not part of the denial-pattern analysis. If no Plannotator denial archive exists, the skill can read human-authored `ExitPlanMode` denial reasons from Claude Code's local JSONL history. These stored outcomes are plans that a person returned for revision. The raw transcripts stay local. The skill reads review history that may contain private plans, comments, paths, and repository details. Review the generated report before sharing it. ## Run a compound analysis Choose the Plannotator archive or Claude Code history. The skill uses the Plannotator archive by default. If neither source exists, choose a directory when prompted. Review the plan counts, date range, and revision rate that the skill reports. Inspect the recurring reasons, requests, and structural preferences that the skill finds in the selected plans. The skill writes a self-contained HTML report into the plans directory. The report includes counts, source quotes, changes over time, and candidate prompt instructions. Keep only patterns supported by several examples. Remove one-off preferences, obsolete decisions, and instructions that belong to one repository or task. If the skill finds an earlier compound report, it asks whether to analyze the full archive or only review files newer than that report. An incremental run with fewer than three new denials warns that the evidence may be too thin. ## Optionally add instructions to future plans After showing the report, the skill asks whether to save candidate instructions in an optional local instruction file: ```text theme={null} ${PLANNOTATOR_DATA_DIR:-~/.plannotator}/hooks/compound/enterplanmode-improve-hook.txt ``` Plannotator calls this file a hook. It adds the instructions to future planning sessions before the agent writes a plan. If the file already exists, the skill asks whether to replace it, merge the new instructions with it, or keep it. Enabling the hook is optional. Read the instructions first. Delete or revise them when your repository, architecture, or review standards change. ## What the report can establish The report can show repeated feedback in the selected local archive. It cannot prove that every pattern should become a permanent rule. Use these checks before adding an instruction: * Does the report cite several independent examples? * Is the pattern still current? * Does it apply broadly, or only to one project or task? * Would a deterministic lint rule or test enforce it more reliably? * Can a future maintainer trace the instruction back to source evidence? Keep the report and the resulting instruction separate. The archive is evidence. The instruction is a maintained interpretation that you may revise or delete. ## Where to put a reusable instruction Put repository-wide guidance in `AGENTS.md` or `CLAUDE.md` only when it should affect most work in that scope. Put narrower instructions in a directory-level file or a task-specific skill. The guide to [writing a good AGENTS.md](/learn/ai-development/how-to-write-a-good-agents-md) explains how to keep repository guidance small and verifiable. The compound skill does not sync feedback across a team, create organization-wide rules, or publish a hosted knowledge base. It analyzes the local files available to the agent that runs it. Use Plannotator's plan-review loop to return specific comments and revisions to your coding agent. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # Code Review with Plannotator Source: https://docs.plannotator.ai/code-review/index Review local changes, GitHub pull requests, and GitLab merge requests with open-source Plannotator, then return precise feedback to coding agents. Open-source Plannotator opens code changes in a local browser review interface. Inspect the diff, annotate exact lines or ranges, suggest replacements, and return structured feedback to the coding agent working on the change. ## Review local changes Run `plannotator review` inside a changed project. Plannotator detects supported Git, GitButler, Jujutsu, and Perforce workspaces and opens the comparison in your browser. Use the [local change review guide](/open-source/workflows/local-changes) for provider defaults, comparison controls, and feedback behavior. Local review does not commit, merge, or deploy code. **Approve** returns the configured approval message to the active agent session. **Send Feedback** returns your annotations and overall comments. ## Review pull requests and merge requests Open a GitHub pull request or GitLab merge request with the supported Plannotator command. The local interface shows the hosted change and can collect supported screenshots, video, HTML, and Markdown from the review conversation. GitHub or GitLab remains the system of record for hosted comments, review status, and the merge decision. GitHub documents the underlying [pull request review model](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews). See [pull request and merge request review](/open-source/workflows/pull-requests) and [review artifacts](/learn/code-review/review-pull-request-artifacts). ## Use optional AI review Plannotator can launch configured review agents to analyze a change. Treat their findings as review leads. Verify each claim against the current code and revision before acting on it. The [agent reviews guide](/open-source/workflows/agent-reviews) explains configuration, scope, and limits. ## Choose a review path | Need | Use | | - | - | | Return feedback on uncommitted or local changes | [Local change review](/open-source/workflows/local-changes) | | Inspect a GitHub PR or GitLab MR | [Pull request and merge request review](/open-source/workflows/pull-requests) | | Ask a configured AI reviewer to inspect a change | [Agent reviews](/open-source/workflows/agent-reviews) | The Learn section explains [revision diffs](/learn/code-review/what-is-a-revision-diff), [review artifacts](/learn/code-review/what-are-code-review-artifacts), and [why AI-generated pull requests can be harder to review](/learn/code-review/why-ai-generated-pull-requests-are-harder-to-review). *Reviewed August 3, 2026. Maintained by the Plannotator documentation team.* # ADR vs RFC vs Technical Specification Source: https://docs.plannotator.ai/compare/adr-vs-rfc-vs-technical-specification Choose an ADR, software RFC, or technical specification by the decision, discussion, authority, lifecycle, and maintenance record you need. Use an ADR to preserve one significant architectural choice and its consequences. Use an RFC to circulate a proposal that needs broad discussion before adoption. Use a technical specification to define behavior and design that implementers and maintainers need to keep true. ## The decision table | Question | ADR | RFC | Technical specification | | - | - | - | - | | Main job | Record a choice | Propose and discuss a direction | Define required behavior and design | | Typical status | Proposed, accepted, rejected, deprecated, superseded | Draft, in discussion, accepted, rejected, withdrawn | Draft, accepted, implemented, superseded | | Best scope | One architecturally significant decision | A proposal with organization-wide or cross-team consequences | One system, feature, protocol, or durable behavior contract | | Alternatives | Records the important considered options | Invites comparison and disagreement | May link ADRs for choices rather than repeat all debate | | After acceptance | Usually remains historical decision memory | Produces follow-up decisions, specifications, and plans | Stays current or is explicitly superseded | | Implementation tasks | Link a plan | Link a plan after decision | Link or derive a plan; do not make the spec a task log | ## Use an ADR for “why this choice?” An ADR captures the context, decision, and consequences of one significant design choice. The [ADR community](https://adr.github.io/) and [MADR](https://adr.github.io/madr/) provide established definitions and formats. Example: “Use a time-bounded database lease for job claims.” The record explains why process locks fail, what alternatives were considered, and what monitoring becomes necessary. Use the [ADR template](/templates/architecture-decision-record). ## Use an RFC for “should we adopt this proposal?” An RFC is a discussion vehicle. It gives reviewers a concrete proposal, motivation, alternatives, compatibility effects, rollout, and open questions. An accepted RFC often produces ADRs for durable architecture choices and a specification for maintained behavior. Example: “Introduce expiring anonymous share links.” Reviewers need to discuss security, user recovery, abuse, migration, and whether expiry is fixed or activity-based. Use the [software RFC template](/templates/software-rfc). ## Use a technical specification for “what must remain true?” A technical specification defines observable requirements, non-goals, design, interfaces, data, failure behavior, security, compatibility, rollout, and verification. It should be maintained when the system changes. Example: “Expired and unknown share links return the same public response, and expired links do not read document content.” That statement can become a requirement with a corresponding integration proof. Use the [technical specification template](/templates/technical-specification). ## A useful document chain ```text theme={null} RFC proposal → accepted architecture choices in ADRs → maintained behavior in a technical specification → current implementation sequence in a coding plan → returned evidence in an agent handoff ``` Not every change needs the whole chain. A small internal choice may need only an ADR and a pull request. A broad proposal may need all five records. Use the smallest set that leaves no ambiguity about the current authority. For shared discussion, [Workspaces](https://help.plannotator.ai/workspaces/review-plans-and-technical-decisions) uses the same underlying document workflow for plans, specifications, ADRs, RFCs, and handoffs. *Reviewed July 18, 2026. Written and maintained by the Plannotator documentation team. Format guidance is based on primary ADR sources and common software proposal practice; the example chain is Plannotator's editorial recommendation.* # GitHub Spec Kit vs Kiro Specs Source: https://docs.plannotator.ai/compare/github-spec-kit-vs-kiro-specs Compare GitHub Spec Kit and Kiro Specs by artifact set, workflow modes, requirement style, task structure, tool coupling, persistence, and reuse rights. Choose GitHub Spec Kit when you want an open, tool-portable feature directory with a constitution and extended technical artifacts. Choose Kiro Specs when you want an integrated requirements, design, and tasks workflow inside Kiro, including requirements-first, design-first, and quick-plan modes. **Sources:** [`github/spec-kit` at `57cc518d`](https://github.com/github/spec-kit/tree/57cc518d63d6f10da3dd93df1ebcadda87c59374) and the [official Kiro Specs documentation](https://kiro.dev/docs/specs/), captured July 18, 2026. Spec Kit is MIT. Kiro does not publish an open template license in the reviewed documentation, so this site paraphrases Kiro and links to the official source. ## Artifact and workflow comparison | Dimension | GitHub Spec Kit | Kiro Specs | | - | - | - | | Primary artifact set | Constitution, spec, plan, research, data model, contracts, quickstart, tasks | Requirements or bug analysis, design, tasks | | Default sequence | Specify, Plan, Tasks, Implement | Requirements-first, design-first, or quick plan | | Requirement structure | Independently testable user stories, scenarios, requirement IDs, measurable outcomes | User stories, acceptance criteria, EARS-style behaviors, functional requirements, edge cases | | Planning constraints | Constitution checks and technical context | Kiro steering and the selected spec workflow | | Task structure | Stable task IDs, parallel markers, user-story labels, exact paths | Discrete tasks managed in the Kiro spec interface | | Tool coupling | Open repository toolkit with support for many coding agents | Kiro IDE and web product workflow | | Persistence | Explicit guidance for living or historical spec strategies | Files live under `.kiro/specs/`; the product can update them in place | ## Choose GitHub Spec Kit when * a repository-owned feature directory should work across supported agents; * a project constitution should constrain every feature plan; * research, data model, contracts, and quickstart deserve separate artifacts; or * stable requirement and task IDs help trace implementation. The official [Spec Kit documentation](https://github.github.com/spec-kit/) explains the core workflow, and the project's templates make the exact structure inspectable. ## Choose Kiro Specs when * Kiro is already the team's planning and implementation environment; * the same three-file artifact set is enough; * requirements-first and design-first entry points are both useful; or * quick plan should create the artifacts without intermediate gates. The [requirements-first guide](https://kiro.dev/docs/specs/feature-specs/requirements-first/) and [quick-plan guide](https://kiro.dev/docs/specs/quick-plan/) document those modes. ## Rights matter for a template gallery Spec Kit's MIT license permits reuse with its notice. Kiro's public content terms do not provide the same open-template permission. That difference does not judge product quality, but it changes what a documentation site can safely redistribute. Plannotator links to Kiro's official artifacts instead of copying them. ## Inspect both same-case outputs * [Complete generated Spec Kit artifact tree](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/github-spec-kit/raw): the planning flow produced the constitution, specification, plan, supporting technical artifacts, and tasks. * [Manual, source-faithful Kiro example](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/kiro-specs/manual): the three files follow Kiro's public artifact model but were not generated by Kiro because the vendor workflow required unavailable authentication. Read the full [GitHub Spec Kit](/frameworks/github-spec-kit) and [Kiro Specs](/frameworks/kiro-specs) profiles, or start with the original [technical specification template](/templates/technical-specification). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. GitHub and Kiro are not affiliated with or endorsed by Plannotator.* # Software Planning Comparisons Source: https://docs.plannotator.ai/compare/index Use evidence-backed comparisons to choose between planning frameworks and document formats without rankings or unsupported quality claims. These comparisons answer a concrete choice using official repositories or documentation captured on July 18, 2026. They compare artifact models and workflows, not popularity or a universal “best” method. Choose between a defined design-to-execution method and a durable project-state system. Choose between an open feature directory and an integrated three-file spec workflow. Choose the document that matches the decision, discussion, or maintained contract. Use this supporting guide to separate product intent, maintained technical design, and the current execution sequence. Each page states its sources, observed differences, and the decision each format supports. A source change can invalidate a comparison, so the capture date is part of the evidence. *Reviewed July 18, 2026. Researched and maintained by the Plannotator documentation team.* # PRD vs Technical Specification vs Implementation Plan Source: https://docs.plannotator.ai/compare/prd-vs-technical-specification-vs-implementation-plan Choose a PRD, technical specification, or implementation plan by whether you need product intent, technical design, or an execution sequence. Use a PRD to define what product outcome is needed and why. Use a technical specification to define how the system should behave and be designed. Use an implementation plan to sequence the current work. Link them instead of forcing all three jobs into one document. ## The practical comparison | Question | PRD | Technical specification | Implementation plan | | - | - | - | - | | Main job | Establish product intent | Define maintained behavior and design | Establish the current execution sequence | | Primary reader | Product, design, engineering, research, stakeholders | Engineers, operators, security, maintainers | Implementers and reviewers of this change | | Typical contents | Users, journeys, goals, non-goals, requirements, acceptance, metrics | Architecture, interfaces, data, failures, security, compatibility, verification | Affected areas, ordered steps, dependencies, risks, tests | | Should choose implementation details? | Only when a true product constraint requires one | Yes, at the level needed to preserve behavior and design | Uses accepted design to name concrete work | | Lifecycle | Updated while product intent changes; then superseded deliberately | Maintained with the system or explicitly superseded | Usually completed, abandoned, or replaced after the change | | Key review question | Are we solving the right problem with a testable boundary? | Is the design correct, safe, operable, and maintainable? | Can this sequence implement and verify the accepted design? | ## One requirement through all three documents ```text theme={null} PRD FR-4: An owner can choose an expiry when creating a guest link. Technical specification Store an optional expiry timestamp, evaluate it in the access resolver before reading content, and make expired and unknown public responses equivalent. Implementation plan 1. Add the expiry field and migration. 2. Enforce expiry in the shared access resolver. 3. Add the Share-dialog control. 4. Prove response equivalence and existing-link compatibility. ``` The documents remain traceable without repeating every paragraph. If evidence changes the product boundary, update the PRD. If implementation evidence changes the accepted design, update the technical specification or its linked ADR. If only the order of work changes, update the plan. ## Judge the document by its role, not its name Some teams call the product-intent artifact a product specification, feature specification, or product brief. Some use “technical plan” for both design and sequencing. Do not manufacture a distinction from the filename alone. Inspect the document’s actual authority, contents, and lifecycle. The separation here is supported by two inspectable source models: * BMad Method’s pinned [PRD template](https://github.com/bmad-code-org/BMAD-METHOD/blob/717479bc3f50f38119fd958b9e577a8bde2e0184/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md) holds product intent before separate architecture, epics, and stories. * GitHub Spec Kit’s pinned [feature specification](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/spec-template.md), [implementation plan](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/plan-template.md), and [task list](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/tasks-template.md) assign different work to different artifacts. For a concrete same-case artifact, inspect the [generated BMad express technical specification for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/blob/main/examples/bmad-method/raw/_bmad-output/specs/spec-reliable-webhook-delivery/SPEC.md). This run produced a technical specification, not a PRD. ## Choose the smallest complete set * Use only a PRD when product scope needs agreement but design has not started. * Add a technical specification when behavior or design must remain authoritative beyond one change. * Add an implementation plan when the work spans enough systems or risk that sequence and validation need review. * For a small reversible change, one well-written plan may carry enough product context. State that choice explicitly. Copy the [PRD template](/templates/product-requirements-document), [technical specification template](/templates/technical-specification), or [AI coding plan template](/templates/ai-coding-plan). Read [What is a product requirements document?](/learn/planning/what-is-a-product-requirements-document) for the review workflow. *Reviewed July 19, 2026. Written and maintained by the Plannotator documentation team.* # Superpowers vs GSD for AI Coding Plans Source: https://docs.plannotator.ai/compare/superpowers-vs-gsd Compare Superpowers and GSD Core by unit of work, artifact location, lifecycle, task grain, human checkpoints, verification, and session continuity. Choose Superpowers when you want a defined path from reviewed design to a detailed, code-level implementation plan and execution. Choose GSD Core when work spans many sessions and the repository must preserve project, phase, verification, and handoff state. **Sources:** [`obra/superpowers` at `d884ae04`](https://github.com/obra/superpowers/tree/d884ae04edebef577e82ff7c4e143debd0bbec99) and [`open-gsd/gsd-core` at `50efae13`](https://github.com/open-gsd/gsd-core/tree/50efae13ce74f02a5b0253ce0c205c5eac2a99e3), reviewed July 18, 2026. Both repositories use MIT licenses. ## The practical difference | Dimension | Superpowers | GSD Core | | - | - | - | | Primary unit | Design and implementation plan | Project, milestone, phase, and plan | | Main location | `docs/superpowers/specs/` and `docs/superpowers/plans/` | `.planning/` with project and phase state | | Lifecycle | Brainstorm, review design, plan, execute, review, verify, finish branch | Discuss, plan, execute, verify, ship across phases and milestones | | Task grain | Exact files, interfaces, test setup, commands, expected output, commit | Phase plans supported by context, research, summaries, verification, and UAT | | Human checkpoint | Design acceptance before implementation planning | Decisions during discussion plus verification and UAT records | | Continuity | The design and plan survive into execution | State, roadmap, phase artifacts, summaries, and continuation files survive | | Maintenance cost | Keep the design and plan accurate | Keep an entire project-state tree coherent | ## Choose Superpowers when * one feature or change is ready for design refinement; * the team wants implementation steps precise enough for a separate agent session; * test-first execution and verification are part of the desired method; and * repository plans should name exact code boundaries. The official [writing-plans skill](https://github.com/obra/superpowers/blob/d884ae04edebef577e82ff7c4e143debd0bbec99/skills/writing-plans/SKILL.md) shows the expected task precision. ## Choose GSD Core when * work spans multiple phases, milestones, or context windows; * research, decisions, current state, execution summaries, verification, and UAT all need durable files; * the next session must be able to resume from a documented current state and next action; and * the team will actively remove or update stale state. The official [planning-artifacts reference](https://github.com/open-gsd/gsd-core/blob/50efae13ce74f02a5b0253ce0c205c5eac2a99e3/docs/reference/planning-artifacts.md) defines that state tree. ## Inspect both same-case outputs * [Superpowers generated design](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/superpowers/raw): the design completed, but both implementation-plan attempts stalled. * [GSD generated `.planning/` tree](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/gsd/raw/.planning): project setup and phase context completed, but the phase-plan run was interrupted before it produced a plan. ## Can you combine them? A team could use GSD to organize a milestone and use a detailed repository plan for one phase. That combination is an inference, not an official lifecycle published by either source. If you combine them, name which artifact controls current state and avoid duplicating the same plan in two places. For a neutral starting point, use the [AI coding plan template](/templates/ai-coding-plan). Read the full [Superpowers](/frameworks/superpowers) and [GSD Core](/frameworks/gsd) profiles before adopting either method. *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. The compared projects are not affiliated with or endorsed by Plannotator.* # Architecture Decision Record Formats Source: https://docs.plannotator.ai/frameworks/adr-formats Compare MADR, Michael Nygard's ADR form, and a minimal decision-memory form by structure, review need, and durable value. Choose an ADR form by how much decision analysis needs to survive. MADR makes drivers, options, consequences, and confirmation explicit. Michael Nygard's form keeps status, context, decision, and consequences. A minimal memory form can preserve only the surprising tradeoff and reason. **Source stamps:** [MADR at `835fc94`](https://github.com/adr/madr/tree/835fc94baa37887774b1cddddb2ae874881e703b), the maintained [Nygard template record](https://github.com/joelparkerhenderson/architecture-decision-record/tree/b7654d64ecbcfaf8bce04678b568ea3483c91a94/locales/en/templates/decision-record-template-by-michael-nygard), and [`mattpocock/skills` at `9603c1cc`](https://github.com/mattpocock/skills/tree/9603c1cc8118d08bc1b3bf34cf714f62178dea3b), reviewed July 18, 2026. ## Structural comparison | Form | Typical sections | Use when | | - | - | - | | MADR full | Context, drivers, options, outcome, consequences, confirmation, option pros and cons | The choice needs explicit option analysis and later confirmation | | MADR minimal | Context, decision, consequences | The team wants MADR conventions with less ceremony | | Nygard | Title, status, context, decision, consequences | A concise, stable architecture log is enough | | Minimal decision memory | Title plus one to three sentences for context, choice, and reason | The durable value is one surprising, hard-to-reverse tradeoff | MADR publishes [full, minimal, bare, and bare-minimal variants](https://adr.github.io/madr/). Its repository also [uses MADR for its own decisions](https://github.com/adr/madr/blob/835fc94baa37887774b1cddddb2ae874881e703b/docs/decisions/0000-use-markdown-architectural-decision-records.md). The Nygard form is widely represented as status, context, decision, and consequences. ## One decision at three levels of detail **Decision:** use a database lease for queued jobs. * A full MADR record compares database leases, process locks, and queue-owned visibility timeouts against crash recovery and multi-worker coordination. * A Nygard record explains the duplicate-claim problem, chooses the conditional database lease, and records recovery and monitoring consequences. * A minimal record says that process locks do not coordinate or survive restart, so the system uses a time-bounded conditional database lease. None is automatically better. Use the smallest form that preserves the decision future maintainers would otherwise repeat. ## Reuse notes MADR is available under MIT or CC0. The maintained ADR example collection contains mixed source licenses, so this site does not import it as one template pack. Our [ADR template](/templates/architecture-decision-record) is original and cites the source traditions that informed it. See [ADR vs RFC vs technical specification](/compare/adr-vs-rfc-vs-technical-specification) before deciding whether an ADR is the correct document at all. *Reviewed July 18, 2026. Researched and maintained by the Plannotator documentation team.* # What Is a PRFAQ? Amazon's Working Backwards Method Explained Source: https://docs.plannotator.ai/frameworks/amazon-working-backwards-prfaq A PRFAQ combines a future press release with customer and internal FAQs. Learn how Amazon's Working Backwards method uses it before product requirements and technical design. PRFAQ means **Press Release and Frequently Asked Questions**. In Amazon's Working Backwards method, a team writes a future customer-facing press release and an FAQ before product development to test who the customer is, what problem matters, what outcome the product should deliver, and which assumptions or risks still need evidence. AWS says Amazon product teams write the press release before requesting a budget, assembling a team, or writing code. The FAQ then covers customer questions and internal questions that affect the decision. This page explains those public facts without implying Amazon endorsement or reproducing an internal template. A fictional RelayCheck newsroom page presents a future press release about finding breaking webhook changes before deployment beside a contract-diff report. A fictional RelayCheck newsroom page presents a future press release about finding breaking webhook changes before deployment beside a contract-diff report. ## The three parts of a PRFAQ | Part | Job | Questions it should answer | | - | - | - | | Future press release | Describe the proposed launch from the customer's point of view | Who is the customer? What problem changes? Why is the outcome worth choosing? How does the customer start? | | Customer FAQ | Test the future customer experience | How does it work? What does it cost? What happens when it fails? How are privacy, security, support, and migration handled? | | Internal FAQ | Test whether the organization should and can pursue the idea | What evidence supports it? What are the risks, costs, dependencies, alternatives, feasibility limits, and success conditions? | AWS's [product-management account of Working Backwards](https://aws.amazon.com/executive-insights/content/product-management-at-amazon/) describes a one-page press release followed by an FAQ whose first half covers customer questions and whose second half covers internal questions. The exact section names and formatting used by other teams vary. ## What the future press release does The future press release states the desired launch as though the product already exists. It forces the author to name a customer, a problem, a useful outcome, and a believable path to value in language a customer can understand. It is not a real announcement and should not become unsupported sales copy. Every claim about the problem, demand, behavior change, price, or reliability creates a question that the FAQs must answer with evidence or mark as unresolved. AWS says the press release comes before budget, staffing, or code and must fit on one page. Its purpose is to simplify and focus the idea for the end customer. An [AWS account of the Cloud Development Kit](https://aws.amazon.com/blogs/opensource/working-backwards-the-story-behind-the-aws-cloud-development-kit/) also says Amazon uses the PRFAQ mechanism to work backwards from customer needs when creating products and services. ## Customer FAQs versus internal FAQs Customer FAQs stay in the future customer's language. They should cover the questions that would affect adoption or trust, such as use, value, price, privacy, security, reliability, compatibility, support, and recovery. Internal FAQs test the idea against current reality. They should cover evidence, alternatives, costs, staffing, technical uncertainty, operational load, legal or security constraints, measurement, and conditions that would stop or narrow the work. Do not move every difficult customer question into the internal section. A customer still needs an answer about data handling or failure behavior. The internal FAQ can then explain what the team must prove or build to make that customer answer true. A Working Backwards review board links interviews, incidents, and prototype evidence to a fictional RelayCheck press release, three claim-level questions, and a proceed, revise, or park decision. A Working Backwards review board links interviews, incidents, and prototype evidence to a fictional RelayCheck press release, three claim-level questions, and a proceed, revise, or park decision. ## The writing and review cycle 1. Gather customer evidence before writing the future outcome. Use interviews, observed behavior, support records, usage data, experiments, and current alternatives. 2. Draft the press release in customer language. Keep the idea narrow enough that a reader can identify the customer, problem, outcome, and first use. 3. Write the customer FAQs. Treat each unclear or unsupported answer as a research question, not a reason to add vague confidence. 4. Write the internal FAQs. State the riskiest assumptions, feasibility gaps, costs, dependencies, alternatives, and stop conditions. 5. Review the document with the functions that own those claims. Ask for comments on exact text and record unanswered questions. 6. Revise the document and the supporting research. Proceed, narrow, revise, or park the idea when the evidence supports that decision. Official AWS guidance says teams share these documents internally for perspective and use continuing customer feedback during development. The more detailed cycle of multiple drafts, cross-functional reviews, silent reading, discussion, and another revision is described by the [Working Backwards guide](https://workingbackwards.com/resources/working-backwards-pr-faq/) written by former Amazon practitioners. Those meeting details are a practitioner convention, not a requirement for every team that uses a PRFAQ. ## Evidence a reviewer should demand | Claim in the PRFAQ | Useful evidence | Review challenge | | - | - | - | | The customer has this problem | Interviews, observed work, usage data, support cases, incident records | Is the sample relevant, and does the evidence show the stated problem rather than a nearby one? | | The problem is worth solving now | Frequency, severity, cost, delay, abandonment, willingness to change | What happens if the team does nothing for six months? | | The proposed outcome is better | Prototype use, behavior tests, comparison with current alternatives | Did customers change behavior, or did they only say the idea sounded useful? | | The customer journey is believable | Task tests, mockups, workflow observation, migration or setup proof | Where does the customer first get value, and where are they likely to stop? | | The product can be built and operated | Technical spike, dependency proof, security review, cost model, support plan | Which unknown could invalidate the promised experience? | | The business can sustain it | Price research, unit-cost model, adoption assumptions, staffing needs | Which variable has the greatest effect on viability? | | The result can be measured | Baseline, metric definition, target, observation window, counter-metric | Could the metric rise while the customer outcome gets worse? | A reviewer should be able to trace every material number and future claim to evidence, an owner, or an explicit test. An unanswered question can remain in a draft. A confident answer with no support is harder to review. ## When to move beyond the PRFAQ Proceed when the customer and problem are clear, the future outcome is useful, the major assumptions have evidence or bounded tests, and no known feasibility, security, legal, or business issue makes the promise false. The PRFAQ can still contain open questions if their owners and decision paths are explicit. | Next document | Create it when | What it adds | | - | - | - | | Product requirements document | The idea has earned continued work and the product boundary needs agreement | Users, journeys, goals, non-goals, observable requirements, acceptance criteria, and success measures | | Technical specification | The team must define behavior or design that should remain true during and after implementation | Architecture, interfaces, data, failure behavior, security, compatibility, rollout, and verification | | Implementation plan | The product boundary and enough design are accepted to sequence the current change | Affected systems, ordered work, dependencies, risks, and validation | AWS Prescriptive Guidance says teams can plan epics or user stories from the PRFAQ and target customer journey. Plannotator's document boundaries are practical editorial guidance rather than universal Amazon terminology. Use the [complete PRFAQ template and fictional example](/templates/prfaq), then move accepted product intent into the [PRD template](/templates/product-requirements-document). The [PRD, technical specification, and implementation plan comparison](/compare/prd-vs-technical-specification-vs-implementation-plan) explains the later documents. ## Where PRFAQ practices vary The public core is stable: start from the customer, write a future press release, answer customer and internal questions, review the idea, and do this before product development. Other details vary by team and source. | Practice | How to treat it | | - | - | | `PRFAQ`, `PR/FAQ`, or `PR FAQ` spelling | Different spellings of the same document name | | Exact page count | A useful constraint in some sources, not a universal public Amazon rule | | Required headings or paragraph order | Template choices that should serve the decision rather than be copied as doctrine | | Fictional customer or executive quotes | A common way to make the proposed benefit concrete, not evidence that a real customer agrees | | Silent reading time and meeting format | Review conventions described by practitioners, adaptable to team size and context | | Appendix contents | Supporting evidence when readers need it, not a place to hide the technical specification or implementation plan | | Final decision label | Proceed, revise, narrow, or park are clear choices; each organization can name its decision process differently | Marcelo Calbucci's [PRFAQ 101](https://www.theprfaq.com/prfaq-101) is another practitioner framework. It explicitly separates the press release, customer FAQs, internal FAQs, and an optional appendix, and says a PRFAQ precedes rather than replaces a PRD. Its page limits and formatting rules belong to that framework, not to an official Amazon standard. Start with copyable Markdown, one complete fictional software example, and reviewer notes for the claims that need evidence. ## Sources and independence Primary Amazon and AWS sources used here are [The Secrets to AWS Product Management](https://aws.amazon.com/executive-insights/content/product-management-at-amazon/), [AWS Well-Architected guidance on customer needs](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/oa.ti.6-prioritize-customer-needs-to-deliver-optimal-business-outcomes.html), the [AWS product strategy guide](https://docs.aws.amazon.com/pdfs/prescriptive-guidance/latest/strategy-product-development/strategy-product-development.pdf), and the [AWS CDK Working Backwards account](https://aws.amazon.com/blogs/opensource/working-backwards-the-story-behind-the-aws-cloud-development-kit/). Practitioner conventions are labeled and linked separately. Amazon, AWS, Working Backwards, and the PRFAQ Framework are named for identification. Plannotator is not affiliated with or endorsed by Amazon, AWS, Working Backwards, or PRFAQ Lab. *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team.* # BMad Method Framework Profile Source: https://docs.plannotator.ai/frameworks/bmad-method A source-backed profile of the BMad Method: adaptive delivery tracks, product briefs, PRDs, architecture, epics, stories, and sprint state. The BMad Method is a role-oriented AI development method that can span discovery, product definition, architecture, epics, stories, implementation, and verification. It offers Quick Flow, BMad Method, and Enterprise tracks so the planning inventory can change with project scope. **Source stamp:** [`bmad-code-org/BMAD-METHOD` at `717479bc`](https://github.com/bmad-code-org/BMAD-METHOD/tree/717479bc3f50f38119fd958b9e577a8bde2e0184), reviewed July 18, 2026. Repository license: MIT. BMad has separate trademark terms; this page uses the name only for identification. ## Representative artifact tree ```text theme={null} _bmad-output/ planning-artifacts/ product-brief.md prd.md architecture.md epics.md project-context.md implementation-artifacts/ stories/ sprint-status.yaml ``` The official [getting-started tutorial](https://github.com/bmad-code-org/BMAD-METHOD/blob/717479bc3f50f38119fd958b9e577a8bde2e0184/docs/tutorials/getting-started.md) explains the tracks. The repository publishes source templates for the [product brief](https://github.com/bmad-code-org/BMAD-METHOD/blob/717479bc3f50f38119fd958b9e577a8bde2e0184/src/bmm-skills/1-analysis/bmad-product-brief/assets/brief-template.md), [PRD](https://github.com/bmad-code-org/BMAD-METHOD/blob/717479bc3f50f38119fd958b9e577a8bde2e0184/src/bmm-skills/2-plan-workflows/bmad-prd/assets/prd-template.md), architecture, epics, stories, and sprint status. ## Workflow and conventions The method uses specialized roles and guided workflows. Its current PRD structure includes stable journey and functional-requirement IDs, glossary terms, non-goals, MVP boundaries, success metrics, counter-metrics, open questions, and assumptions. The architecture document defines the system structure and technical boundaries. Epics and stories divide that design into delivery work. `project-context.md` can carry stack versions and implementation rules. The result is broader than a feature specification or coding plan. Product, architecture, and delivery artifacts are separate objects, and the selected track determines how much of the method applies. ## Inspect the same-case output Inspect the [generated BMad express technical specification and memory log for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/bmad-method/raw). The express specification flow completed. The run did not attempt BMad's full PRD, architecture, epics, and stories path. ## Choose BMad when * the work begins before implementation planning and needs product discovery or a PRD; * role-oriented workflows help the team divide analysis, product, architecture, and delivery; * epics and stories are the preferred execution model; and * the team wants the planning depth to change with the selected track. Choose a smaller framework when the real job is one feature directory, one repository plan, or one architectural decision. The Plannotator-authored [PRD template](/templates/product-requirements-document) supplies one reusable artifact without adopting the full method, and [PRD vs technical specification vs implementation plan](/compare/prd-vs-technical-specification-vs-implementation-plan) explains the downstream boundary. *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. BMad is named nominatively; Plannotator is not affiliated with or endorsed by BMad Code, LLC.* # GitHub Spec Kit Framework Profile Source: https://docs.plannotator.ai/frameworks/github-spec-kit A source-backed profile of GitHub Spec Kit: constitution, feature specification, plan, research, data model, contracts, tasks, and implementation. GitHub Spec Kit is an open toolkit for spec-driven development. Its core sequence is Specify, Plan, Tasks, and Implement, with a project constitution and optional clarification and analysis. Each feature keeps a directory of Markdown artifacts that feed the next phase. **Source stamp:** [`github/spec-kit` at `57cc518d`](https://github.com/github/spec-kit/tree/57cc518d63d6f10da3dd93df1ebcadda87c59374), reviewed July 18, 2026. Repository license: MIT. ## Artifact tree ```text theme={null} .specify/ memory/constitution.md templates/ specs/feature-name/ spec.md plan.md research.md data-model.md quickstart.md contracts/ tasks.md ``` The official templates cover the [constitution](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/constitution-template.md), [specification](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/spec-template.md), [plan](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/plan-template.md), and [tasks](https://github.com/github/spec-kit/blob/57cc518d63d6f10da3dd93df1ebcadda87c59374/templates/tasks-template.md). ## Workflow and conventions The constitution records principles, constraints, quality gates, and governance. The feature specification uses independently testable user stories, scenarios, edge cases, requirement IDs, assumptions, and measurable outcomes. The plan captures technical context and checks the design against the constitution before producing supporting research, data, contract, and quickstart artifacts. Tasks use stable IDs such as `T001`, optional parallel markers, user-story labels, and exact paths. This makes dependencies and coverage visible without requiring one continuous prose plan. ## Review and persistence Specification quality can be checked before implementation planning, and the plan can be analyzed against requirements and the constitution. Spec Kit's [persistence guidance](https://github.github.com/spec-kit/concepts/spec-persistence.html) discusses living specs and flow-forward or flow-back updates instead of prescribing one universal maintenance rule. ## Inspect the same-case output Inspect the [complete generated Spec Kit artifact tree for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/github-spec-kit/raw). It contains the constitution, specification, checklist, plan, research, data model, contracts, quickstart, and 69-task list produced by the planning flow. ## Choose Spec Kit when * a feature directory should be portable across supported coding agents; * requirements, design, tasks, and supporting technical artifacts need distinct roles; * a project constitution should constrain feature plans; and * stable requirement and task IDs help review and traceability. Spec Kit calls its product-intent artifact a feature specification rather than a PRD. See [PRD vs technical specification vs implementation plan](/compare/prd-vs-technical-specification-vs-implementation-plan) for the role-based distinction, [GitHub Spec Kit vs Kiro Specs](/compare/github-spec-kit-vs-kiro-specs) for the framework comparison, and the Plannotator-authored [technical specification template](/templates/technical-specification). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. GitHub and Spec Kit are named for identification; Plannotator is not affiliated with or endorsed by GitHub.* # GSD Core Planning Framework Profile Source: https://docs.plannotator.ai/frameworks/gsd A source-backed profile of GSD Core: durable project state, milestones, phases, plans, execution summaries, verification, UAT, and handoff files. GSD Core organizes long-running agent work around a durable `.planning/` directory. The project, roadmap, requirements, current state, phase context, research, plans, summaries, verification, UAT, and handoff files carry work across sessions. **Source stamp:** [`open-gsd/gsd-core` at `50efae13`](https://github.com/open-gsd/gsd-core/tree/50efae13ce74f02a5b0253ce0c205c5eac2a99e3), reviewed July 18, 2026. Repository license: MIT. ## Artifact tree ```text theme={null} .planning/ PROJECT.md ROADMAP.md REQUIREMENTS.md STATE.md config.json codebase/ phases/NN-slug/ NN-CONTEXT.md NN-DISCUSSION-LOG.md NN-RESEARCH.md NN-VALIDATION.md NN-PP-PLAN.md NN-PP-SUMMARY.md NN-VERIFICATION.md NN-UAT.md .continue-here.md ``` The official [planning-artifacts reference](https://github.com/open-gsd/gsd-core/blob/50efae13ce74f02a5b0253ce0c205c5eac2a99e3/docs/reference/planning-artifacts.md) defines these roles. The repository also publishes its [templates](https://github.com/open-gsd/gsd-core/tree/50efae13ce74f02a5b0253ce0c205c5eac2a99e3/gsd-core/templates) and dogfoods ADRs, including a [plan-drift guard decision](https://github.com/open-gsd/gsd-core/blob/50efae13ce74f02a5b0253ce0c205c5eac2a99e3/docs/adr/22-plan-drift-guard.md). ## Workflow and task grain The recurring lifecycle is discuss, plan, execute, verify, and ship. A roadmap divides a milestone into phases. Phase context and research inform one or more plans. Execution summaries and verification records describe what happened. `STATE.md` and continuation files show the next session where work stopped and what remains. GSD's unit is broader than one implementation plan. It keeps project and milestone memory alongside the plan, making file maintenance part of the method. ## Review and handoff conventions Discussion captures human decisions before planning. Verification and UAT have their own artifacts. A phase can leave an explicit continuation record rather than relying on chat history. These files preserve continuity, but stale files can mislead later sessions if the team does not maintain them. ## Inspect the same-case output Inspect the [generated GSD `.planning/` tree for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/gsd/raw/.planning). It includes the project, requirements, roadmap, state, configuration, and phase context. The phase-plan run stalled and was interrupted, so no completed phase plan is included. ## Choose GSD Core when * work spans many sessions or phases; * the repository should carry explicit project state; * research, execution summaries, verification, and UAT need separate records; and * the team will maintain the planning tree as work changes. For a smaller single-feature method, compare [Superpowers vs GSD](/compare/superpowers-vs-gsd) or inspect [GitHub Spec Kit](/frameworks/github-spec-kit). For long-running work more generally, read [What are long-horizon tasks for AI agents?](/learn/ai-development/what-are-long-horizon-tasks-for-ai-agents). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. GSD Core is named for identification; Plannotator is not affiliated with or endorsed by its maintainers.* # AI Coding Planning Frameworks Source: https://docs.plannotator.ai/frameworks/index Choose among source-backed AI coding and planning frameworks, including Amazon Working Backwards, by artifact model, workflow, task grain, review points, and tool coupling. Choose a framework by the artifact and workflow you need, not by a universal score. Some methods organize one implementation plan. Others maintain project state, feature specifications, issue graphs, or a full product-delivery sequence. The public [comparison repository](https://github.com/plannotator/spec-planning-frameworks#readme) applies each framework to the same reliable-webhook-delivery brief. It preserves generated files, tool versions, interrupted runs, and known limits for five runnable frameworks. Kiro uses a manual, source-faithful example because its authenticated workflow was unavailable. | Framework | Primary unit | Main artifacts | Useful when | | - | - | - | - | | [Superpowers](/frameworks/superpowers) | Design and implementation plan | Repository specs and code-level plans | You want a defined path from design review to detailed execution | | [GSD Core](/frameworks/gsd) | Project, milestone, phase, and plan | A durable `.planning/` tree | Work spans sessions and needs explicit state, phases, and verification | | [GitHub Spec Kit](/frameworks/github-spec-kit) | Feature | Constitution, spec, plan, tasks, supporting artifacts | You want an open feature directory with structured requirements and tasks | | [Kiro Specs](/frameworks/kiro-specs) | Feature or bug | Requirements or bug analysis, design, tasks | You want an IDE-integrated three-file specification workflow | | [Matt Pocock's skills](/frameworks/matt-pocock-skills) | Issue, question, spec, or ticket | Issue-tracker artifacts and focused skills | You want composable planning skills inside an existing engineering process | | [BMad Method](/frameworks/bmad-method) | Product initiative through story | Brief, PRD, architecture, epics, stories | You need a broader role-oriented product and delivery method | | [Amazon Working Backwards PRFAQ](/frameworks/amazon-working-backwards-prfaq) | Proposed product or feature | Future press release, customer FAQ, internal FAQ | You want to test customer value before writing detailed requirements | | [ADR formats](/frameworks/adr-formats) | Architectural decision | One Markdown decision record | You need to preserve a significant choice and its consequences | ## How to choose Ask five questions: 1. Is the main object a feature, project phase, issue graph, delivery program, or decision? 2. Should artifacts live in the repository, an issue tracker, or an IDE-managed directory? 3. Does the team want a prescribed sequence or composable procedures? 4. Should tasks name exact code edits or remain outcome-focused? 5. What review and verification record must survive into the next session? The profiles describe observed source behavior at a pinned commit or capture date. They do not claim that one framework produces better code. For direct decisions, see [Superpowers vs GSD](/compare/superpowers-vs-gsd) and [GitHub Spec Kit vs Kiro Specs](/compare/github-spec-kit-vs-kiro-specs). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team.* # Kiro Specs Framework Profile Source: https://docs.plannotator.ai/frameworks/kiro-specs A source-backed profile of Kiro Specs: requirements-first, design-first, and quick-plan workflows with requirements, design, and task artifacts. Kiro Specs is an IDE and web workflow that produces three primary artifacts: requirements or bug analysis, technical design, and tasks. Teams can begin with requirements, begin with the design, or use a quick plan that creates the same artifact set without gates between phases. **Source stamp:** [official Kiro Specs documentation](https://kiro.dev/docs/specs/), captured July 18, 2026. Kiro's published content terms do not provide an open template license, so this page paraphrases and links rather than copying templates. ## Artifact tree ```text theme={null} .kiro/specs/feature-name/ requirements.md # or bugfix.md design.md tasks.md ``` The official [requirements-first guide](https://kiro.dev/docs/specs/feature-specs/requirements-first/) describes user stories, acceptance criteria, EARS-style system behavior, functional requirements, and edge cases. Design covers architecture, components, sequences, data models, interfaces, error handling, and testing. The task file provides discrete implementation work. ## Workflow variants | Mode | Starting point | Review shape | | - | - | - | | Requirements-first | User behavior and acceptance criteria | Requirements lead into design and tasks | | Design-first | Technical direction | Design leads, then requirements and tasks are reconciled | | Quick plan | Clarifying questions and one pass | Produces the three artifacts without phase gates | Kiro's [steering](https://kiro.dev/docs/steering/) supplies persistent project guidance outside the feature directory. In chat, the spec artifacts can be brought back into context for implementation or validation. ## Review and handoff conventions The artifact set gives reviewers separate places to challenge expected behavior, technical design, and execution tasks. On the web, users can refine artifacts before running all or selected tasks and can download the Markdown. In the IDE, the files remain in the repository's `.kiro/specs/` directory. ## Inspect a source-faithful example Inspect the [manual, source-faithful Kiro three-file example for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/kiro-specs/manual). It was not generated by Kiro. The comparison could not run the vendor workflow without Kiro authentication, so the original example follows the public artifact model and labels that limit in every file. ## Choose Kiro Specs when * the team already works in Kiro and wants integrated artifact editing and task execution; * three consistent files are enough for the feature; * requirements-first and design-first entry points are both useful; or * a quick-plan mode should remove intermediate gates. Use [GitHub Spec Kit vs Kiro Specs](/compare/github-spec-kit-vs-kiro-specs) for the direct choice. Plannotator does not redistribute Kiro templates; use the official product to create them. *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. Kiro is named for identification; Plannotator is not affiliated with or endorsed by AWS.* # Matt Pocock's AI Engineering Skills Profile Source: https://docs.plannotator.ai/frameworks/matt-pocock-skills A source-backed profile of Matt Pocock's AI engineering skills for specs, tickets, wayfinding, domain modeling, ADRs, and issue-centered planning. Matt Pocock's public skills repository provides focused procedures that can fit into an existing engineering process. Rather than requiring one universal lifecycle, different skills produce specifications, issue tickets, uncertainty maps, domain language, and small decision records. **Source stamp:** [`mattpocock/skills` at `9603c1cc`](https://github.com/mattpocock/skills/tree/9603c1cc8118d08bc1b3bf34cf714f62178dea3b), reviewed July 18, 2026. Repository license: MIT. ## Representative artifacts | Skill | Main output | | - | - | | `to-spec` | Problem statement, solution, user stories, implementation and testing decisions, out of scope, further notes | | `to-tickets` | Tracer-bullet tickets with outcome, acceptance criteria, and blockers | | `wayfinder` | One map issue plus question issues that expose the known frontier and remaining fog | | Domain modeling | Context glossary, avoided synonyms, context map, and small ADRs when a durable tradeoff exists | Issue-tracker output is the default model, with a local `.scratch//issues/` fallback for ticket files. `to-tickets` favors vertical slices and uses expand, migrate, and contract for broad refactors that do not fit that grain. ## Workflow and task grain `to-spec` focuses on decisions and testing seams. It generally avoids exact file paths and large code snippets unless a prototype excerpt carries an important decision. `to-tickets` turns the accepted specification into independently useful work with explicit dependencies. `wayfinder` handles earlier uncertainty by separating decisions, questions, agent research, human input, and work that is not precise enough to schedule. The domain-modeling skill recommends a very small ADR only for a surprising, hard-to-reverse tradeoff. A separate `CONTEXT.md` can preserve preferred terms and terms to avoid. ## Inspect the same-case output Inspect the [generated specification and 11 local tickets for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/matt-pocock-skills/raw). The run completed the specification and dependency-aware local-ticket flow without creating remote issues. ## Choose these skills when * the team wants composable procedures rather than a required end-to-end method; * an issue tracker is the shared planning memory; * uncertain work should be mapped before it becomes implementation tickets; and * outcome-focused tickets are more useful than code-level instructions. The official repository describes these as skills for engineering work. A real `CONTEXT.md` example exists in the linked Course Video Manager project, but that repository has no clear reuse license; this site links and paraphrases it rather than copying it. See the [AI coding plan template](/templates/ai-coding-plan), [ADR formats](/frameworks/adr-formats), and [coding-agent handoff template](/templates/agent-handoff). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. Matt Pocock's name is used for identification; Plannotator is not affiliated with or endorsed by him.* # Superpowers Planning Framework Profile Source: https://docs.plannotator.ai/frameworks/superpowers A source-backed profile of Superpowers: brainstorming, reviewed design, repository plans, code-level task grain, TDD, execution, and verification. Superpowers is a skills-based software-development method that moves from brainstorming to a reviewed design, a detailed repository plan, implementation, review, and branch completion. Its distinctive planning choice is code-level precision: tasks name files, interfaces, verification commands, expected output, and commits. **Source stamp:** [`obra/superpowers` at `d884ae04`](https://github.com/obra/superpowers/tree/d884ae04edebef577e82ff7c4e143debd0bbec99), reviewed July 18, 2026. Repository license: MIT. ## Artifact tree ```text theme={null} docs/superpowers/ specs/ YYYY-MM-DD-topic-design.md plans/ YYYY-MM-DD-feature.md ``` The [brainstorming skill](https://github.com/obra/superpowers/blob/d884ae04edebef577e82ff7c4e143debd0bbec99/skills/brainstorming/SKILL.md) produces the design. The [writing-plans skill](https://github.com/obra/superpowers/blob/d884ae04edebef577e82ff7c4e143debd0bbec99/skills/writing-plans/SKILL.md) produces the implementation plan. The project publishes [real specs](https://github.com/obra/superpowers/tree/d884ae04edebef577e82ff7c4e143debd0bbec99/docs/superpowers/specs) and [real plans](https://github.com/obra/superpowers/tree/d884ae04edebef577e82ff7c4e143debd0bbec99/docs/superpowers/plans) in the same format. ## Workflow and task grain 1. Explore the problem through questions and alternative approaches. 2. Present the design in reviewable sections and obtain agreement. 3. Write an implementation plan that another engineer or agent can execute. 4. Execute with the method's testing and review skills. 5. Verify the result before completion and finish the branch deliberately. A plan task includes exact files, consumed and produced interfaces, a failing test or verification setup, implementation instructions, a command with expected output, and a commit. The source targets short steps and rejects vague placeholders such as “add validation.” ## Review and handoff conventions The main human checkpoint is design acceptance before implementation planning. The written plan is intended to survive into a separate execution session. Verification and review are separate procedures, not a sentence at the end of the plan. ## Inspect the same-case output Inspect the [generated Superpowers design for reliable webhook delivery](https://github.com/plannotator/spec-planning-frameworks/tree/main/examples/superpowers/raw). The design completed, but two implementation-plan attempts stalled. The repository does not present the missing plan as complete. ## Choose Superpowers when * the team wants one repeatable path from design through execution; * an implementation-ready repository plan is valuable; * exact file and verification instructions reduce ambiguity; and * the team accepts a method that shapes more than the planning document. Choose a different model when planning should stay in an issue tracker, when the problem is still too uncertain for code-level tasks, or when a broader product-delivery program is the real need. See [Superpowers vs GSD](/compare/superpowers-vs-gsd) and the Plannotator-authored [AI coding plan template](/templates/ai-coding-plan). *Reviewed July 19, 2026. Researched and maintained by the Plannotator documentation team. Superpowers is named for identification; Plannotator is not affiliated with or endorsed by its maintainers.* # Plannotator Art Gallery Source: https://docs.plannotator.ai/gallery Browse Plannotator illustrations for AI coding plans, agent instructions, review artifacts, revision diffs, and living documentation workflows. ## Featured A team workflow connects a request, shared planning context, agent execution, collaborative code review, verified code, and maintained documentation. A team workflow connects a request, shared planning context, agent execution, collaborative code review, verified code, and maintained documentation. A linear Markdown manuscript and an unfolding HTML artifact show when an AI coding agent should choose editable prose or a spatial interactive review surface. A linear Markdown manuscript and an unfolding HTML artifact show when an AI coding agent should choose editable prose or a spatial interactive review surface. A chat becomes a standalone interactive artifact with three versions, then Totman separately annotates exported Markdown and HTML files. A chat becomes a standalone interactive artifact with three versions, then Totman separately annotates exported Markdown and HTML files. Two teammates and Totman approve an overnight goal at sunset; Claude and Codex agents work through research, code, validation, and artifacts before the team reviews the results at sunrise. Two teammates and Totman approve an overnight goal at sunset; Claude and Codex agents work through research, code, validation, and artifacts before the team reviews the results at sunrise. The same AI agent follows one long route across a coupled technical landscape, preserving checkpoints, recovering from a dead end, and assembling a verified review packet. The same AI agent follows one long route across a coupled technical landscape, preserving checkpoints, recovering from a dead end, and assembling a verified review packet. A generic AI agent turns a short chat into standalone plan, diagram, interactive prototype, video, code walkthrough, and report artifacts while Totman curates the finished work. A generic AI agent turns a short chat into standalone plan, diagram, interactive prototype, video, code walkthrough, and report artifacts while Totman curates the finished work. A developer reviews code from two agents, then teammates inspect the change record and decide what to accept. A developer reviews code from two agents, then teammates inspect the change record and decide what to accept. ## Planning and documents A product requirements document reviewed by Totman and a coding agent, with user evidence on the left and separate technical specification and implementation plan documents beyond the technical-design boundary. A product requirements document reviewed by Totman and a coding agent, with user evidence on the left and separate technical specification and implementation plan documents beyond the technical-design boundary. A human and two coding-agent robots uncover an AI coding plan by connecting repository evidence and interview questions to three prototypes, implementation notes, a revised plan, and independent verification. A human and two coding-agent robots uncover an AI coding plan by connecting repository evidence and interview questions to three prototypes, implementation notes, a revised plan, and independent verification. A team plans work, AI agents build and test it, monitoring tools return evidence, and a reviewer decides whether to release it. A team plans work, AI agents build and test it, monitoring tools return evidence, and a reviewer decides whether to release it. A fictional RelayCheck newsroom page presents a future press release about finding breaking webhook changes before deployment beside a contract-diff report. A fictional RelayCheck newsroom page presents a future press release about finding breaking webhook changes before deployment beside a contract-diff report. A Working Backwards review board links interviews, incidents, and prototype evidence to a fictional RelayCheck press release, three claim-level questions, and a proceed, revise, or park decision. A Working Backwards review board links interviews, incidents, and prototype evidence to a fictional RelayCheck press release, three claim-level questions, and a proceed, revise, or park decision. A conceptual software workflow moves from a change request through a team decision and planning context to agent execution, verified code, and maintained documentation. A conceptual software workflow moves from a change request through a team decision and planning context to agent execution, verified code, and maintained documentation. A real source comparison where one recovery-window decision changes one line in Markdown but six locations in generated HTML. A real source comparison where one recovery-window decision changes one line in Markdown but six locations in generated HTML. The same release-readiness interface progresses from a restrained HTML wireframe through a styled mockup to an interactive prototype whose state changes from blocked to ready. The same release-readiness interface progresses from a restrained HTML wireframe through a styled mockup to an interactive prototype whose state changes from blocked to ready. A low-fidelity release-readiness wireframe fills the frame while an offset tracing-paper layer isolates its header, summary blocks, evidence rows, and reviewer notes column. Measurement marks and sparse review strokes show that the structure is under review. A low-fidelity release-readiness wireframe fills the frame while an offset tracing-paper layer isolates its header, summary blocks, evidence rows, and reviewer notes column. Measurement marks and sparse review strokes show that the structure is under review. A blocked release screen changes to ready after a failed check passes and the action becomes available. A blocked release screen changes to ready after a failed check passes and the action becomes available. An AI coding agent hands a team one versioned evidence folio containing the code diff, decision context, validation, risks, review artifact, and follow-up work. An AI coding agent hands a team one versioned evidence folio containing the code diff, decision context, validation, risks, review artifact, and follow-up work. An AI coding agent and a human reviewer update a living codebase handbook from the current code diff and validation while preserving an earlier RFC as history. An AI coding agent and a human reviewer update a living codebase handbook from the current code diff and validation while preserving an earlier RFC as history. A four-step diagram shows reviewed plan feedback, a pattern report, a maintained instruction, and the next planning session. A four-step diagram shows reviewed plan feedback, a pattern report, a maintained instruction, and the next planning session. ## Agent instructions and context Totman turns one reviewed correction into a verified field-guide lesson linked to its source evidence. Totman turns one reviewed correction into a verified field-guide lesson linked to its source evidence. A central AI coding task connects to rich references including an HTML prototype, code example, tests, and a rubric. A central AI coding task connects to rich references including an HTML prototype, code example, tests, and a rubric. Totman writes a single AGENTS.md file containing commands, boundaries, verification, and documentation pointers before one coding agent carries its guidance through the repository and reaches a passing check. Totman writes a single AGENTS.md file containing commands, boundaries, verification, and documentation pointers before one coding agent carries its guidance through the repository and reaches a passing check. An AGENTS.md rulebook sits beside a game map with a violet legal route, required green checkpoints, and red forbidden terrain. Several agent pieces skip checkpoints or cross the prohibited region while one reaches the finish. An AGENTS.md rulebook sits beside a game map with a violet legal route, required green checkpoints, and red forbidden terrain. Several agent pieces skip checkpoints or cross the prohibited region while one reaches the finish. Totman places a root CLAUDE.md at session start while a coding agent enters a repository where top-level and apps/web CLAUDE.md files join the same context path. Totman places a root CLAUDE.md at session start while a coding agent enters a repository where top-level and apps/web CLAUDE.md files join the same context path. An AI agent's crowded working context is reduced to a focused set of relevant sources, current instructions, and a verified output. An AI agent's crowded working context is reduced to a focused set of relevant sources, current instructions, and a verified output. An approved goal packet connected to a code diff, validation receipt, interface evidence, open question, and a final human decision sheet for morning review. An approved goal packet connected to a code diff, validation receipt, interface evidence, open question, and a final human decision sheet for morning review. An AI agent turns a source-code repository tree and Git history into a navigable codebase wiki whose architecture pages cite the exact files and commits they explain. An AI agent turns a source-code repository tree and Git history into a navigable codebase wiki whose architecture pages cite the exact files and commits they explain. A verified source signal becomes diluted inside a crowded context window, while a focused route selects three relevant wiki pages and preserves a complete architecture map. A verified source signal becomes diluted inside a crowded context window, while a focused route selects three relevant wiki pages and preserves a complete architecture map. A recurring loop turns repository changes into reviewed wiki updates through model inference, scheduled CI, pull requests, and review, balanced against the exploration time it saves. A recurring loop turns repository changes into reviewed wiki updates through model inference, scheduled CI, pull requests, and review, balanced against the exploration time it saves. Two teammates review a specification, plan, and tasks before agents implement the work and update a codebase wiki. Two teammates review a specification, plan, and tasks before agents implement the work and update a codebase wiki. ## Code review Two teammates and the Plannotator mascot trace one AI-generated change from its request and system behavior through the code diff to passing validation evidence. Two teammates and the Plannotator mascot trace one AI-generated change from its request and system behavior through the code diff to passing validation evidence. An approved account-deletion lifecycle compared with a reviewed revision that fails to revoke refresh tokens and a corrected revision that closes the gap. An approved account-deletion lifecycle compared with a reviewed revision that fails to revoke refresh tokens and a corrected revision that closes the gap. A reviewer compares a code diff with supporting screenshot, video, HTML, Markdown, and test-result artifacts. A reviewer compares a code diff with supporting screenshot, video, HTML, Markdown, and test-result artifacts. A central code diff is connected by violet threads to screenshot, video, HTML, Markdown, and test-result evidence. A central code diff is connected by violet threads to screenshot, video, HTML, Markdown, and test-result evidence. Plannotator Review showing a Markdown review artifact selected beside its uploaded artifact list and an annotation about validating product behavior. Plannotator Review showing a Markdown review artifact selected beside its uploaded artifact list and an annotation about validating product behavior. A reviewer returns to a pull request after nine commits and compares the current head with the exact revision reviewed on Tuesday. A reviewer returns to a pull request after nine commits and compares the current head with the exact revision reviewed on Tuesday. A Git commit timeline shows nine commits between a Tuesday code-review checkpoint and Thursday's current head, while Totman inspects the cumulative revision diff since the last review. A Git commit timeline shows nine commits between a Tuesday code-review checkpoint and Thursday's current head, while Totman inspects the cumulative revision diff since the last review. Three translucent Git comparison baselines overlay the same pull request, with the reviewer's last checkpoint highlighted in violet through the current head. Three translucent Git comparison baselines overlay the same pull request, with the reviewer's last checkpoint highlighted in violet through the current head. A two-lane Git diagram where a force-push makes a reviewed commit unreachable while a preserved patch still compares cleanly with the current head. A two-lane Git diagram where a force-push makes a reviewed commit unreachable while a preserved patch still compares cleanly with the current head. *Reviewed July 29, 2026. Maintained by the Plannotator documentation team.* # Plannotator Documentation and Learning Source: https://docs.plannotator.ai/index Choose open-source Plannotator documentation, Workspaces, automation guides, planning templates, framework profiles, comparisons, or practical AI-development guides. Use this site to learn the local open-source tool, understand Plannotator products, or improve the documents and workflows that guide agent-assisted development. Install Plannotator, choose your agent, annotate plans and documents, review code, configure feedback, and troubleshoot local sessions. Share and review product requirements documents (PRDs), technical specs, coding plans, ADRs, and RFCs with your team and coding agents. Connect Plannotator to your coding agent, customize its feedback, and add annotations from scripts and other tools. Copy practical templates, inspect source-backed planning frameworks, and compare formats and methods. Write better plans and agent instructions, collaborate on documents, review code, and work with coding agents. Visit the main site for the short product overview and commercial information. ## Find the right starting point | If you want to | Start here | | - | - | | Run Plannotator on your computer | [Install the open-source tool](/open-source/start/installation) | | Send plan or document feedback to a coding agent | [Annotate your first plan](/open-source/start/quickstart) | | Customize or automate Plannotator | [Use agents and automation](/open-source/reference/) | | Share a technical decision with people and agents | [Open Workspaces Help](https://help.plannotator.ai/workspaces/review-plans-and-technical-decisions) | | Improve a reusable planning document | [Choose a template](/templates/) | | Choose a structured agent-planning method | [Compare planning frameworks](/frameworks/) | | Understand a planning or review practice | [Browse Learn](/learn/) | ## Open source on GitHub View the source, report an issue, or star the repository. *Reviewed July 18, 2026. Maintained by the Plannotator documentation team.* # Claude Artifacts: Examples and How to Use Them Source: https://docs.plannotator.ai/learn/ai-development/claude-artifacts Learn what Claude Artifacts are, how to create and share them, which forms they support, and how to review exported HTML or Markdown. **Claude Artifacts** are substantial, standalone outputs that Claude opens in a dedicated pane beside a conversation. An artifact can be a Markdown document, code snippet, single-page HTML site, SVG image, diagram, flowchart, or interactive React component. You can revise an artifact and switch between versions. You can also inspect or download its source, then publish or share the version you choose. Anthropic documents the current behavior in [What are artifacts and how do I use them?](https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them). Claude uses the Artifacts name in Claude, Claude Desktop, and Claude Code. This guide starts with the artifact pane in Claude and Claude Desktop. Claude Code artifacts are live pages published from a coding session, with different file, version, and sharing rules described below. A chat becomes a standalone interactive artifact with three versions, then Totman separately annotates exported Markdown and HTML files. A chat becomes a standalone interactive artifact with three versions, then Totman separately annotates exported Markdown and HTML files. ## How to use Claude Artifacts 1. **Enable the required capability.** Claude currently requires **Code execution and file creation** under **Settings > Capabilities**. Team and Enterprise owners manage the capability for their organization. 2. **Ask for a standalone result.** Describe the object you need, such as a comparison dashboard, implementation plan, diagram, calculator, prototype, or code walkthrough. Claude may also create an artifact without an explicit request when the output is substantial and self-contained. 3. **Revise the artifact in conversation.** Ask Claude to change it. Markdown artifacts also support selecting text and choosing **Edit with Claude**. Use the version selector to return to an earlier result. 4. **Inspect or export it.** The artifact controls let you view the underlying code, copy the content, or download the file for use outside the conversation. 5. **Publish or share the intended version.** Access rules depend on your plan and on whether the artifact came from Claude or Claude Code. Check the version and audience before copying the link. Anthropic says Claude generally creates an artifact when the content is significant, self-contained, likely to be edited or reused, and able to stand without the rest of the conversation. Its help article describes “typically over 15 lines” as a signal, not a minimum that every useful artifact must meet. ## Claude Artifacts examples and supported forms The supported forms describe what Claude can place in the artifact pane. The examples below are representative uses, not a fixed gallery or a claim that one format is best for every task. | Supported form | Example | What to verify | | - | - | - | | Markdown or plain-text document | Research brief, plan, checklist, report, or operating guide | Sources, assumptions, missing decisions, and whether the document still matches current work | | Code snippet | Data transform, configuration example, or small function | Whether it runs in the real project and satisfies its tests, types, and security rules | | Single-page HTML website | Interactive explainer, dashboard, calculator, timeline, or comparison | Source data, keyboard use, external requests, and whether presentation hides missing evidence | | SVG image | System map, process drawing, or scalable diagram | Labels, relationships, reading order, and accessibility outside the visual rendering | | Diagram or flowchart | Architecture flow, decision tree, or sequence | Whether every connection exists in the cited source material | | Interactive React component | Prototype, game, form, teaching tool, or configuration explorer | Real product behavior, state handling, accessibility, and deployment assumptions | AI features, MCP connections, and persistent storage extend what an artifact can do. They are capabilities, not additional file formats. Anthropic's current help article says AI-powered artifacts run on its infrastructure, MCP access requires each viewer to authenticate and approve the connection, and persistent storage can be personal or shared. For the broader category beyond Anthropic's product, see [What is an AI artifact?](/learn/ai-development/what-is-an-ai-artifact). ## How HTML and interactive Claude Artifacts work HTML earns its place when the reader needs layout, comparison, visualization, or interaction. Markdown remains the clearer default for a linear document that people need to edit, diff, and preserve. [When should AI coding agents produce HTML instead of Markdown?](/learn/code-context/ai-agent-html-vs-markdown) gives the full format decision, including accessibility, Git, and sandboxing tradeoffs. Claude and Claude Code use different artifact models: | Behavior | Claude and Claude Desktop | Claude Code | | - | - | - | | Main surface | Dedicated artifact pane beside chat | Live page published from a coding session | | Common source forms | Markdown, text, code, single-page HTML, SVG, diagrams, and React | A project file ending in `.html`, `.htm`, or `.md` | | Update model | Ask Claude to revise, then use the version selector | Claude edits the project file and republishes to the same URL | | Runtime | May use Claude-powered behavior, approved MCP connections, and published-artifact storage | One self-contained page with no backend; a strict Content Security Policy blocks ordinary external requests | | Outside data | Each viewer approves and authenticates their MCP connections | Declared MCP connectors are the only live-data exception to the external-request block | The [Claude Code artifacts reference](https://code.claude.com/docs/en/artifacts) documents additional limits: one page, no backend, no relative multi-page site, a rendered size of 16 MiB or less, and no external scripts, stylesheets, fonts, images, `fetch`, XHR, or WebSocket requests. Claude Code can inline assets and can call declared MCP connectors through the viewing person's account. A Claude Code artifact is therefore a review or communication page, not a deployed application. If the work needs its own database, authentication, server routes, or durable application behavior, it needs ordinary application infrastructure. ## How versions work In Claude and Claude Desktop, artifact updates appear as versions in the version selector. Editing an earlier chat message creates a different conversation branch with its own artifacts. It does not rewrite the existing conversation's artifact history. Before publishing or sharing, select the version the recipient should receive. The [publishing and sharing guide](https://support.claude.com/en/articles/9547008-publish-and-share-artifacts) explicitly includes this check in both workflows. Claude Code keeps one artifact URL across updates. Each publish creates a new version, and the Share control can expose one selected version or follow the latest version. A new Claude Code session needs the artifact URL to update the existing page; without it, the session creates a new artifact. Version history records artifact changes. It does not prove that a walkthrough still matches the current code revision, that a dashboard used current data, or that a prototype reflects the shipped application. Record the source revision, dataset, or decision date inside consequential artifacts. ## How publishing and sharing work Claude uses **publish** for public access and **share** for restricted access. The exact choice depends on the product surface and plan. | Surface and plan | Current access behavior | | - | - | | Claude Free, Pro, or Max | Publishing creates a public link. Anyone with the link can view and use basic interactions without an account. Customizing the artifact or using AI-powered features requires signing in. | | Claude Team or Enterprise | Sharing is limited to authenticated members of the organization. A viewer also needs access to the originating project when the artifact came from a project. | | Claude Code Pro or Max | A new artifact is private to its author. The author can publish a public link that does not require a Claude account. | | Claude Code Team or Enterprise | Organization sharing is available. Public sharing is available only when an Owner enables it. An artifact that calls connectors cannot use a public link. | Published Claude artifacts can also be embedded on allowed domains. The publisher chooses which domains may embed the artifact. Check these two sharing effects before you publish: * Sharing a Claude artifact inside a Team or Enterprise organization also gives viewers access to attachments and files from the conversation that created it. * Unpublishing a consumer artifact revokes the link, prevents that same artifact from being published again, and permanently deletes its associated personal and shared storage data when persistent storage was used. Product behavior changes. Recheck Anthropic's [publish and share artifacts](https://support.claude.com/en/articles/9547008-publish-and-share-artifacts) page before documenting a sensitive distribution workflow. ## Safety and review limits A working artifact still needs review. * **Public means reachable by anyone with the link.** Remove secrets, private source material, customer data, and hidden attachments before publishing. * **Connected actions use the viewer's account.** MCP access requires approval, but an artifact may still read or change data through the tools the viewer authorizes. Inspect the declared connection and the action before approving it. * **Shared storage is shared by design.** Anthropic displays a confirmation when an artifact first uses shared storage. Do not enter sensitive information until you understand whether the artifact uses personal or shared storage. * **Polish is not evidence.** Verify diagrams, calculations, code references, and conclusions against the underlying source. A visually convincing artifact can be wrong or selective. * **A version can become stale.** A published walkthrough may describe an earlier commit, investigation state, or decision even when the page still loads correctly. * **Exported HTML is active content.** Once downloaded and opened elsewhere, it can contain scripts and network requests. Use an isolated viewer and inspect the source before granting it access to local files, credentials, or trusted application origins. For file creation and code execution more broadly, Anthropic's [security guidance](https://support.claude.com/en/articles/12111783-create-and-edit-files-with-claude) explains why network access changes the risk of data leaving its sandboxed environment. ## Export and annotate a Claude Artifact with Plannotator Plannotator does not have a native Claude Artifacts integration. The workflow is a manual, file-based handoff: export the artifact, open the local file in Plannotator, and return structured feedback to the coding agent that started the review. 1. Select the intended version in the Claude artifact pane. 2. Download or copy the source. 3. Save the result as a local `.md`, `.html`, or `.htm` file. Keep multi-file exports and local support assets together in one folder. 4. Open the file or folder: ```bash theme={null} plannotator annotate claude-artifact.md plannotator annotate claude-artifact.html plannotator annotate ./claude-artifact-folder/ ``` 5. For HTML, choose the review surface that matches the question: ```bash theme={null} # Review layout and interaction in the sandboxed HTML viewer plannotator annotate claude-artifact.html # Remove scripts and annotate a Markdown conversion of the content plannotator annotate claude-artifact.html --markdown ``` 6. Add comments to selected text or elements. 7. Choose **Send Feedback**. When a supported coding agent opened the review, Plannotator returns the structured annotations to that agent. A direct CLI run prints the feedback to standard output. Plannotator's HTML viewer uses a sandboxed iframe with an opaque origin, but it does not block outbound network requests made by the page. Use the Markdown conversion for untrusted HTML. You can also disconnect from the network when the review does not need live resources. The complete workflow is in [Annotate any web page or HTML file](/learn/annotate-any-web-page-or-html-file) and [Annotate HTML in Plannotator](/open-source/workflows/html). This workflow reviews a local export. Plannotator does not become a generic HTML host, publish the Claude artifact, or attach comments directly to the live Claude page. Install the local feedback tool and connect it to Claude Code, Codex, or another supported coding agent. Organize many local agent files in a separate experimental workspace when the problem is finding outputs, not returning one review to an agent. ## Frequently asked questions ### Are Claude Artifacts the same as AI artifacts? Claude Artifacts is Anthropic's product name. An AI artifact is the broader category of reusable AI-produced documents, applications, images, reports, media, and other outputs. ### Can Claude Artifacts contain HTML and JavaScript? Yes. Claude supports single-page HTML and interactive React artifacts. Claude Code artifacts can use inline HTML, CSS, and JavaScript, but its published viewer blocks ordinary external requests and provides no backend. ### Can someone view a published Claude Artifact without an account? Yes for a public link on a supported consumer plan. Basic viewing and interaction do not require an account. Organization-shared artifacts require the viewer to sign in with the appropriate organization account. ### Can I download a Claude Artifact? Yes. The artifact pane provides controls to view the source, copy the content, and download files. Check the selected version before exporting. ### Does Plannotator annotate the live Claude Artifact? No. Export the HTML or document first, then open the local file in Plannotator. This preserves a clear boundary between the Claude artifact and the separate review session. ## Primary sources * [Anthropic: What are artifacts and how do I use them?](https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them) * [Anthropic: Publish and share artifacts](https://support.claude.com/en/articles/9547008-publish-and-share-artifacts) * [Anthropic: Share session output as artifacts in Claude Code](https://code.claude.com/docs/en/artifacts) * [Anthropic: Create and edit files with Claude](https://support.claude.com/en/articles/12111783-create-and-edit-files-with-claude) *Last reviewed July 19, 2026. Maintained by the Plannotator project.* # What an AI Agent Night Shift Looks Like for Teams Source: https://docs.plannotator.ai/learn/ai-development/how-teams-run-ai-agent-night-shift A practical team workflow for turning approved plans into code, product artifacts, tests, screenshots, and a morning review packet while AI agents work overnight. An AI agent night shift is an asynchronous team workflow. During the day, the team agrees on a bounded goal, the context that should guide it, and the limits on what agents may do. Overnight, agents work across dependent stages. In the morning, the team reviews the returned code and artifacts before deciding what to revise, approve, or run next. My first successful night shift ran for more than twelve hours. It was a `/goal` run using GPT-5.6 Sol with Ultra. It returned software, images, product work, and launch material. Teammates reviewed those outputs and used them to define a larger second goal. Two teammates and Totman approve an overnight goal at sunset; Claude and Codex agents work through research, code, validation, and artifacts before the team reviews the results at sunrise. Two teammates and Totman approve an overnight goal at sunset; Claude and Codex agents work through research, code, validation, and artifacts before the team reviews the results at sunrise. ## The Night Shift started as a developer workflow [Jamon Holmgren's Night Shift](https://jamon.dev/night-shift) describes a focused solo pattern: write and approve detailed specifications during the day, let agents implement them while you are away, then review the commits and documentation in the morning. A team night shift keeps that boundary and expands the work around it. Product, design, engineering, customer-facing teammates, security, operations, and go-to-market may all contribute to the goal or its constraints. The morning handoff must support their different review responsibilities. The pattern does not depend on darkness. It can run during a weekend, a meeting block, or across time zones. What matters is the boundary between two periods of human attention. ## Why long-running AI agents make this practical The first run combined three Codex concepts: * **GPT-5.6 Sol** was the model used for complex, open-ended work. * **Ultra** was the execution setting, including delegation of suitable work to subagents. * **`/goal`** gave the run one persistent objective and completion target. Anthropic describes a similar direction for [Claude Fable 5](https://www.anthropic.com/claude/fable), including long-running asynchronous work, planning across stages, selective delegation, and reviewable deliverables. These capabilities are useful when the work forms a [long-horizon task](/learn/ai-development/what-are-long-horizon-tasks-for-ai-agents): one coherent objective whose later stages depend on decisions, experiments, or changes made earlier. Runtime alone does not make a task long-horizon. The agent must preserve state, verify progress, recover from failed approaches, and continue toward one definition of done. ## One person approved the first run. The team set the second goal. The first night shift did not begin with a new company process. One person set a bounded goal and authorized the run. The resulting software, images, product work, and launch material gave teammates something concrete to inspect. That changed the next conversation. The team could react to real output instead of debating an abstract possibility. Teammates contributed more context and ambition, then helped define the next night's goal. Useful output can create momentum, but excitement is not a shipping verdict. The team still needs to decide whether the work is correct, coherent, and worth carrying forward. ## Prepare the run together Requests enter a team with unresolved questions. A customer may describe a problem without knowing the right product behavior. A design direction may conflict with an operating constraint. An implementation may be possible in several ways, each with different costs and risks. During the day, the team handles the decisions that require shared judgment: * understand the customer or internal request; * inspect the product, codebase, and current behavior; * compare product, design, and technical approaches; * choose the brand and customer story when they are part of the goal; * define scope, constraints, and unacceptable outcomes; * identify observable acceptance criteria; * name the people who must review the result. Agents can investigate the repository, answer questions, create prototypes, and compare options during this phase. The team resolves consequential disagreements before the overnight run begins. Record the approved handoff in a form that people and agents can inspect: | The team approves | The handoff records | | - | - | | Exact scope | The approved plan or context version | | Constraints | Systems, files, data, and environments the agent may touch | | Definition of done | Required behavior and validation | | Evidence | Tests, screenshots, traces, videos, HTML, or documents to return | | Stop conditions | Decisions and failures that must come back to a person | | Review ownership | Named morning reviewers and the expected decision | An individual developer may handle a small, reversible task faster in a normal agent conversation. Shared preparation earns its cost when the work crosses people, systems, or business decisions. ## Execute one goal across several functions A cross-functional night shift should produce a connected body of work, not a folder of unrelated agent output. Research informs product choices. Product choices shape the implementation. Working software produces screenshots, traces, documentation, launch material, and review evidence. Each stage uses what the earlier stage learned. A practical run can: 1. confirm a clean, passing baseline; 2. load the approved context and relevant project documentation; 3. work in an isolated branch, worktree, or sandbox; 4. create a test and validation plan; 5. implement and inspect the work in bounded stages; 6. produce the required code, design, product, documentation, and launch artifacts; 7. run focused and end-to-end validation; 8. update the living documentation affected by the change; 9. stop and return a question when the answer would exceed the approved context. Use parallel agents for genuinely separable work. Tightly coupled decisions are often easier to preserve when one agent advances the main sequence and delegates selected research, testing, or asset work. This workflow can also support forward-deployed engineering: a product and engineering team working closely with a customer from discovery and technical scoping through a reviewable implementation, demonstration, and documentation set. ## What belongs in the morning review packet? The morning review packet should let teammates understand and verify the work without reconstructing the private agent session. An approved goal packet connected to a code diff, validation receipt, interface evidence, open question, and a final human decision sheet for morning review. An approved goal packet connected to a code diff, validation receipt, interface evidence, open question, and a final human decision sheet for morning review. Include: * the authorizing goal and exact approved context version; * the exact revision or set of revisions; * a map of what changed and why; * test, typecheck, lint, build, and CI results as applicable; * screenshots of important interface states; * product or demo video when motion matters; * Playwright video or traces when browser behavior needs inspection; * generated images, documents, HTML, or Markdown explainers with their intended use; * failed approaches, deviations, unresolved questions, and risks; * proposed updates to maintained product and technical documentation. [Playwright traces](https://playwright.dev/docs/trace-viewer-intro) can preserve actions, page state, console output, network activity, errors, source, and DOM snapshots. They are useful because reviewers can inspect the behavior behind a polished demo. Tests, revisions, screenshots, and other [code review artifacts](/learn/code-review/what-are-code-review-artifacts) support the summary's claims. The summary is an index. It does not certify the work. ## Review the result and set the next goal Different teammates inspect different parts of the morning packet: * engineering reviews the exact code and validation; * product checks whether the agreed outcome was built; * design reviews the behavior and experience, not only screenshots; * customer-facing teammates confirm that the result answers the real request; * owners resolve open questions and approve, revise, or stop the work. Record what the team learned alongside its verdict. Use those findings to revise the current work or set the next goal. Repeated runs without review create a backlog of disconnected output. If an agent pushes more revisions after review begins, use a [revision diff](/learn/code-review/what-is-a-revision-diff) to see the cumulative change since the last completed review. ## Start with one bounded night The first team experiment should have: * one approved feature, product slice, or customer workflow; * one isolated execution environment; * one required morning review packet; * one named review group; * no autonomous production deployment. Judge the run by the quality and speed of the morning decision. The team should be able to understand the result, inspect the evidence, and decide what happens next. Tokens, commits, changed lines, and runtime do not measure that outcome. A night shift is a poor candidate when the requirements remain disputed, the agent has destructive production access, tests and documentation cannot guide unattended work, or the task requires the agent to invent business policy. The agent should stop when it reaches an unapproved decision boundary. ## Where Plannotator fits Open-source Plannotator gives you local review points before and after a long-running agent task. Use [plan review](/open-source/workflows/plan-review) to annotate the proposed work and return feedback before implementation. Use [code review](/open-source/workflows/local-changes) to inspect the returned local changes, or open a [pull request or merge request](/open-source/workflows/pull-requests) when the agent pushed one. Plannotator does not schedule the agent or enforce a team authorization process. It opens the current plan, document, or diff for review and sends your decision or comments back to the active agent session. ## Frequently asked questions ### Does an AI agent night shift have to run overnight? No. It is asynchronous execution between two periods of focused human work. A weekend, a meeting block, or work across time zones can use the same boundary. ### Can teams use Codex, Claude Code, Cursor, or another agent? Yes. The workflow needs durable context, isolated execution, controlled permissions, inspectable evidence, and human review. It does not depend on one vendor. ### Should the agent merge or deploy when it finishes? Not by default. A first team night shift should return reviewable work. Merge and deployment authority are separate decisions with a larger blast radius. ### What should happen when the agent needs a new decision? It should stop that part of the work, preserve what it learned, and return a specific question. It should not invent product policy or expand its own scope. ### Is the Night Shift only for code? No. The useful output may include code, product copy, design exploration, research, reports, documentation, screenshots, browser traces, and demo videos. Each artifact should support the approved goal and a real morning decision. Learn what makes a task long-horizon and how to prepare the objective, checkpoints, memory, validation, and review boundary. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # Why AI Agents Ignore Instructions and How to Test Them Source: https://docs.plannotator.ai/learn/ai-development/how-to-test-ai-agent-instructions Learn why AGENTS.md, CLAUDE.md, and SKILL.md guide AI agents without enforcing behavior, and how to test required actions, prohibited actions, and final state. AGENTS.md, CLAUDE.md, and SKILL.md can improve an AI agent's work, but they do not enforce behavior. If a rule must not be broken, use permissions, hooks, protected branches, tests, or CI to check it. Then inspect what the agent did instead of trusting its final summary. This does not make instruction files useless. They are good places for repository facts, commands, boundaries, and reusable procedures. Problems begin when a team treats Markdown in the model's context as a control system. An AGENTS.md rulebook sits beside a game map with a violet legal route, required green checkpoints, and red forbidden terrain. Several agent pieces skip checkpoints or cross the prohibited region while one reaches the finish. An AGENTS.md rulebook sits beside a game map with a violet legal route, required green checkpoints, and red forbidden terrain. Several agent pieces skip checkpoints or cross the prohibited region while one reaches the finish. ## Instruction files guide the agent The files serve different jobs: | File or control | Best use | What it does not guarantee | | - | - | - | | `AGENTS.md` | Repository guidance shared across compatible coding agents | That every instruction will affect every action | | `CLAUDE.md` | Persistent project instructions for Claude Code | Strict compliance with every rule | | `SKILL.md` | A reusable procedure and supporting resources for a particular kind of task | That the agent will select, load, or complete every step correctly | | Hooks, permissions, tests, and CI | Deterministic checks around commands, files, code, and final state | Good judgment in cases the check does not cover | The [AGENTS.md open format](https://agents.md/) describes the file as a README for agents. The [Agent Skills specification](https://agentskills.io/specification) separates a skill's discoverable metadata from the full instructions and resources loaded when the skill is used. Anthropic is explicit about the limit of its own format: [Claude Code treats CLAUDE.md as context, not enforced configuration](https://code.claude.com/docs/en/memory). Its documentation recommends concise, specific instructions and hooks for actions that must run at a fixed point. An agent that misses a rule is not necessarily refusing it. The file may not have loaded, two instructions may conflict, the rule may be vague, or the agent may lose track of it during a long sequence of tool calls. Diagnosis comes before rewriting. ## What the HANDBOOK.md benchmark tested The 2026 paper [HANDBOOK.md: A Benchmark for Long-Context Agentic Instruction Following](https://arxiv.org/html/2607.25398) tested whether long policy documents continued to govern agents during multi-step work. The benchmark contains: * 65 tasks across finance, human resources, insurance, logistics, and medical billing; * 10 fictional companies with a different policy for every task; * handbooks ranging from 20 to 124 pages, or about 8,300 to 79,400 tokens; * 82 tools spanning files, email, Slack, calendars, Jira, and Shopify; * 824 deterministic criteria that checked required actions and prohibited actions. An average task took about 17 agent steps and 30 tool calls. The strongest of 30 tested model configurations passed 36.2 percent of trials under strict grading, where one missed requirement failed the whole trial. Most frontier configurations passed fewer than 25 percent. Scores rose sharply when the researchers allowed one failed criterion. Agents often completed most of the work but missed one requirement. In real work, that missed requirement might be the approval, safety check, or prohibition that mattered most. The researchers found four recurring failure patterns: 1. **The immediate request overrode the standing policy.** A plausible message inside the environment persuaded the agent to take an action the handbook prohibited. 2. **The agent performed a check and ignored the result.** Retrieval succeeded, but the later action did not follow the retrieved rule. 3. **The agent skipped verification.** It acted as if a required condition had passed without checking it. 4. **The final report claimed compliance.** The agent said it followed the policy even when the recorded actions showed otherwise. The [benchmark code and task environments](https://github.com/surge-ai/handbook) are public. ## What the benchmark does not prove HANDBOOK.md did not test short, native AGENTS.md or CLAUDE.md files inside Codex or Claude Code. The policies were longer PDF, Word, and HTML documents used through a shared OpenHands-based harness. The study also did not include a human baseline or a short-policy control that isolated document length as the cause of failure. Its tasks were synthetic, deliberately difficult, and scored all-or-nothing. Context compaction did not trigger during the evaluated tasks. Do not turn the 36.2 percent result into a prediction for your repository. Use it as evidence for a narrower conclusion: an instruction can be available to an agent without reliably controlling the agent's later actions. The [Hacker News discussion about the paper](https://news.ycombinator.com/item?id=49096969) contains many reports of agents forgetting rules, skipping tests, or claiming work was complete. Those comments show that the problem feels familiar to practitioners. They do not establish why a particular model or agent failed. ## Test the behavior you care about A useful instruction-following test has three parts: 1. A realistic task. 2. Observable requirements and prohibitions. 3. A verifier that inspects actions and final state. Suppose your AGENTS.md says: ```md theme={null} - Read `api/spec.yaml` before changing an API route. - Never edit files under `packages/api/generated/` by hand. - Run the focused API tests before finishing. - Do not push a branch unless the user asks. ``` Turn those sentences into a test contract: ```md theme={null} # Instruction-following test: update one API handler ## Task Change the response returned by one existing API route. ## Must happen - Read `api/spec.yaml` before editing the route. - Run the focused API test command. ## Must not happen - Do not edit `packages/api/generated/`. - Do not push a branch. - Do not change unrelated routes. ## Expected final state - Only the allowed source and test files changed. - The focused tests exit successfully. - The Git remote state is unchanged. ## Required evidence - Files read before the first edit. - Commands executed and their exit codes. - Final `git diff`. - Final branch and remote status. ``` The test fails if the agent produces the correct API response but edits a generated file or pushes without permission. Task completion and instruction compliance are separate results. ## Check actions and final state An agent's final message is useful for orientation. It is weak evidence on its own. Check the parts of the environment that can prove or disprove the claim: | Claim | Better evidence | | - | - | | "I ran the tests." | Command transcript and exit code | | "I changed only the requested files." | Final `git diff` and status | | "I did not push." | Local branch state compared with the remote | | "I used the approved dependency." | Lockfile, imports, and dependency manifest | | "I followed the migration process." | New migration file, schema state, and migration test | | "I asked for approval." | Recorded approval before the protected action | This is why HANDBOOK.md inspected the resulting files and mock services instead of asking another model whether the answer looked compliant. For repeated evaluations, record the tool sequence as well as the final state. Two agents can reach the same result through different paths, and one path may include a prohibited side effect that the final files no longer reveal. ## Put hard rules at the action boundary Use an instruction when the agent needs judgment. Use a deterministic control when the system can decide from known facts. | Requirement | Suitable control | | - | - | | Read the relevant design document before choosing an approach | AGENTS.md, CLAUDE.md, or a task skill | | Use a particular command after every file edit | Hook | | Never run a destructive command | Tool permission or command wrapper | | Never modify a protected path | Filesystem permission, hook, or CI check | | Do not merge without review | Protected branch and required review | | Generated files must match their source | Generation check in CI | | A response must preserve a product invariant | Automated test | Anthropic's [hooks guide](https://code.claude.com/docs/en/hooks-guide) describes hooks as commands that run at lifecycle events so a required action does not depend on the model choosing to perform it. Controls still need tests. A hook can use the wrong path, a CI job can omit a package, and a permission rule can allow a command through an unexpected shell. Test the control with one allowed action and one action it should block. ## Run more than one trial Model output varies, and instruction failures often appear after the task becomes longer or noisier. One successful run does not establish reliability. Start with a small set: 1. Run the task in a fresh session with only the required context. 2. Repeat it to detect inconsistent behavior. 3. Add realistic distractors such as old documentation, a failed test, or an authoritative-looking request that conflicts with the rule. 4. Run a longer version that requires several tool calls before the protected action. 5. Compare strict compliance, task success, and the number of missed criteria. Strict compliance should remain the release gate for hard requirements. A near-miss score is useful for debugging because it shows whether the agent missed one rule or misunderstood the whole task. ## Fix the right layer after a failure When an agent fails a test, use the failure to choose the fix. ### The file was not loaded Check the filename, location, scope, and product-specific discovery rules. Start a fresh session after changing an instruction file. Ask the product to show which instruction sources it loaded when that diagnostic is available. ### The instruction was vague Replace "be careful with migrations" with an observable rule: ```md theme={null} Migrations are append-only after they reach `main`. Create a new migration instead of editing an existing file. ``` ### Instructions conflicted Inspect root, nested, personal, and tool-specific files. Remove stale rules and state which source wins when two scopes overlap. ### The rule applied only to one task Move the procedure to a skill or task document and keep a short pointer in the standing instructions. See [How to Write a Good AGENTS.md](/learn/ai-development/how-to-write-a-good-agents-md) for scoping and maintenance guidance. ### The rule described a hard boundary Enforce it with permissions, hooks, protected branches, tests, or CI. Keep a short explanation in the instruction file if the agent still needs to understand the boundary. ### The failure appeared late in the task Reduce unrelated context, split the work, or add a check immediately before the protected action. A larger context window may hold the rule without making its influence uniform. See [What Is Context Rot?](/learn/ai-development/what-is-context-rot). ## A practical starting point Choose one repository rule that has failed before. Write one test with: * one realistic task; * two required actions; * two prohibited actions; * a final-state check; * evidence that does not depend on the agent's summary. Run it several times. If the agent misses a hard boundary even once, move that boundary into a deterministic control and rerun the test. Keep AGENTS.md and CLAUDE.md focused on commands, constraints, and verification the agent cannot infer safely. Keep long-running agent work focused, current, and easy to verify. *Last reviewed July 29, 2026. Maintained by the Plannotator project.* # How to Write a Good AGENTS.md (or CLAUDE.md) Source: https://docs.plannotator.ai/learn/ai-development/how-to-write-a-good-agents-md Learn what to put in AGENTS.md or CLAUDE.md, how coding agents load repository instructions, and how to improve results without bloating the agent's context. A good **AGENTS.md** gives a coding agent the smallest set of repository-specific instructions it needs to work correctly. It should explain the commands, constraints, and verification steps the agent cannot safely infer from the code. It should not try to summarize the entire codebase or teach the agent general software engineering. If your team uses Claude Code, the equivalent file is [**CLAUDE.md**](/learn/ai-development/what-is-a-claude-file). The filename and loading rules differ, but the writing principle is the same: include only durable guidance that should influence almost every task in that scope. The best test for every line is simple: > Would removing this instruction cause the agent to make a specific, recurring mistake? If the answer is no, remove it or move it to documentation that the agent can read when relevant. Totman writes a single AGENTS.md file containing commands, boundaries, verification, and documentation pointers before one coding agent carries its guidance through the repository and reaches a passing check. Totman writes a single AGENTS.md file containing commands, boundaries, verification, and documentation pointers before one coding agent carries its guidance through the repository and reaches a passing check. ## What is AGENTS.md? AGENTS.md is a plain Markdown file containing instructions for AI coding agents. The [open AGENTS.md format](https://agents.md/) describes it as a README for agents: a predictable place for build steps, tests, conventions, and other project guidance. The file is normally committed to Git. That makes the instructions reviewable by the team and available to every supported agent that works in the repository. There are no required headings or fields. AGENTS.md does not contain the agent, model, or task. It changes the context the agent receives before working on a task. In practice, it sits between the agent's built-in instructions and the repository it must understand. ## What is the difference between AGENTS.md and CLAUDE.md? AGENTS.md is an open format supported by a growing set of coding tools. CLAUDE.md is Claude Code's native project-memory file. | File | Primary use | How it is scoped | Important behavior | | - | - | - | - | | `AGENTS.md` | Shared repository guidance for Codex and other compatible agents | Root file plus more specific files in nested directories | Codex combines applicable files from the repository root to the working directory. More specific guidance appears later and takes precedence. | | `CLAUDE.md` | Persistent project instructions for Claude Code | User, project, parent, and nested directory files | Claude Code reads the project file at the start of a conversation and loads more specific child instructions when it works in those directories. | Anthropic's [Claude Code best practices](https://code.claude.com/docs/en/best-practices) recommend checking the project-level CLAUDE.md into Git so the team can maintain it together. OpenAI's [Codex documentation](https://learn.chatgpt.com/docs/agent-configuration/agents-md) explains how Codex discovers and combines AGENTS.md files. If your team uses both formats, you can keep one canonical file and create a symbolic link: ```bash theme={null} ln -s AGENTS.md CLAUDE.md ``` Use separate files only when the tools need genuinely different guidance. Duplicating the same instructions in two independent files creates another place for them to drift. ## How coding agents use repository instructions Repository instructions are added to the agent's working context. The model can use them while it explores the repository, makes a plan, edits files, runs commands, and decides whether the task is complete. For Codex, discovery happens once when a run starts. Codex reads global guidance from `~/.codex`, then walks from the project root toward the current working directory. In each directory it checks `AGENTS.override.md` before `AGENTS.md`. Applicable files are combined from broad to specific, with the closer file taking precedence. The default combined project-instruction limit is 32 KiB. Claude Code reads CLAUDE.md at the start of each conversation. It can combine a user-level file, a project file, parent-directory files, and more specific child files. CLAUDE.md can also import another file with `@path/to/file` syntax. That hierarchy matters most in a monorepo. The root should contain rules shared by the whole repository. A package-level file should contain only the guidance that changes inside that package.

Instruction scope

Put each instruction as close as possible to the work it governs

Global

\~/.codex/AGENTS.md

Personal defaults that apply across repositories.

↓

Repository

/AGENTS.md

Shared tooling, boundaries, and completion checks.

↓

Package

/apps/web/AGENTS.md

Only the rules that change for this package.

A nested file should narrow or override broader guidance, not repeat it.

## What should you put in AGENTS.md? Include facts that materially change how the agent should work and are difficult to infer reliably. ### One sentence about the repository State what the repository produces and any boundary that changes engineering decisions. ```md theme={null} This repository contains the API and browser application for a multi-tenant document collaboration product. The raw-file service is a separate deployment and must not render or transform user content. ``` The second sentence earns its place because it prevents a plausible architectural mistake. A long directory tour does not. ### Exact setup, build, and test commands Name non-obvious tools and commands. Explain when to run them and what successful completion requires. ```md theme={null} ## Commands - Install dependencies with `pnpm install` from the repository root. - Run focused tests with `pnpm test --filter ` while developing. - Before finishing, run `pnpm lint`, `pnpm typecheck`, and the tests for every changed package. ``` Commands are high-value instructions because the agent cannot always infer the team's preferred package manager, test scope, or final verification gate. ### Repository-specific constraints Include boundaries that are easy to violate and expensive to repair. ```md theme={null} ## Boundaries - Never edit generated files under `packages/api/generated/` by hand. Update `api/spec.yaml`, then run `pnpm generate:api`. - Database migrations are append-only after they reach `main`. - Do not add a production dependency without explicit approval. ``` Each rule names an action, a scope, and, where useful, the correct alternative. ### A definition of done Tell the agent how it can prove the work is complete. ```md theme={null} ## Before finishing - Run the checks that cover the changed behavior. - For a UI change, capture the rendered page at desktop and mobile widths. - Report the commands you ran and any check you could not run. ``` Verification is more useful than a vague instruction to “write high-quality code.” A test, build, screenshot, or request transcript gives the agent a result it can inspect and improve. ### Pointers to authoritative guidance Link to detailed documentation when it applies only to some tasks. ```md theme={null} ## Task-specific guidance - For API changes, read `docs/api-contract.md` before editing routes. - For database work, follow `docs/migrations.md`. - For frontend accessibility, follow `docs/accessibility.md`. ``` This is progressive disclosure. The agent starts with a small map and loads the relevant detail when the task requires it. Matt Pocock's [AGENTS.md guide](https://www.aihero.dev/a-complete-guide-to-agents-md) recommends the same pattern: keep the root file focused, then point to narrower documentation and skills that load only when the work needs them. ## What should you leave out? ### Information the agent can discover safely Do not list every directory, dependency, or common language convention. Agents can inspect a repository tree, read `package.json`, follow imports, and observe local code patterns. The 2026 paper [Evaluating AGENTS.md](https://arxiv.org/abs/2602.11988) found that repository overviews did not help agents reach task-relevant files faster. Generated files were often redundant with documentation already present in the repository. ### Rules a deterministic tool can enforce Use a formatter for formatting, a linter for static rules, tests for behavior, and permissions or hooks for hard safety boundaries. A model instruction is advisory. Anthropic makes this distinction explicit: CLAUDE.md guidance influences behavior, while [Claude Code hooks](https://code.claude.com/docs/en/best-practices#set-up-hooks) run deterministic scripts. If a command must run after every edit, or one directory must never be modified, an enforceable mechanism is safer than a sentence in a context file.

Choose the right surface

Instructions guide judgment. Tools enforce invariants.

Put in AGENTS.md

  • Use the repository's focused test command.
  • Read the API contract before changing routes.
  • Ask before adding a production dependency.

Enforce elsewhere

  • Code formatting belongs in a formatter.
  • Forbidden imports belong in a linter.
  • Protected paths belong in permissions or hooks.
### Task-specific workflows Do not load a release procedure, database playbook, or security-review checklist into every coding session. Put reusable workflows in separate docs or agent skills, then tell the agent when to use them. ### Frequently changing facts Release versions, temporary status, current incidents, and detailed file maps become stale quickly. Stale guidance is worse than missing guidance because the agent treats it as an active instruction. ### Generic aspirations Instructions such as “write clean code,” “follow best practices,” or “be concise” rarely change the resulting work. Replace them with a repository-specific behavior or remove them. ## Can a large AGENTS.md hurt agent performance? Yes. A context file consumes input space and attention before the agent reads the task or repository. More instructions can also cause more exploration, tests, and reasoning steps. The [Evaluating AGENTS.md](https://arxiv.org/abs/2602.11988) study tested several coding agents on real repository tasks. In that evaluation: * developer-written context files improved task success by about 4 percent on average; * LLM-generated context files reduced success by about 3 percent on average; * context files increased exploration, testing, and inference cost, with generated files raising cost by more than 20 percent in the reported settings; * agents generally followed the instructions, which means unnecessary instructions still consumed work. Those results do not prove that AGENTS.md is useless. The benchmark focused heavily on Python repositories and measured issue resolution rather than every aspect of software quality. It does show that comprehensiveness is not a safe goal. A longer file can make an agent more thorough while making the task slower, more expensive, or less likely to succeed. Philipp Schmid's [practical analysis](https://www.philschmid.de/writing-good-agents) reaches a similar conclusion from the study: describe the non-obvious tooling and purpose that change agent behavior, but avoid generated directory tours, generic style rules, and requirements that apply only to occasional tasks. Anthropic gives similar practical advice for CLAUDE.md: keep it short, include only broadly applicable information, and move occasional domain knowledge into skills or separate files. Its documentation warns that a bloated CLAUDE.md can make the model ignore the instructions that matter. This is one form of [context rot](/learn/ai-development/what-is-context-rot). The file may still fit inside the context window, but useful guidance competes with duplicated, irrelevant, or stale material. ## A practical AGENTS.md template This template is intentionally small. Add a section only when your repository has a real need for it. ```md theme={null} # Repository instructions This repository contains [one-sentence purpose and critical boundary]. ## Commands - Install: `[exact command]` - Develop: `[exact command]` - Focused tests: `[exact command with package or test placeholder]` - Before finishing: `[lint, typecheck, build, or test commands]` ## Boundaries - [A repository-specific action the agent must avoid, plus the alternative.] - [A change that requires approval.] ## Verification - [What proves backend behavior works.] - [What proves frontend behavior works.] - Report any check that could not be run. ## Task-specific guidance - For [task type], read `[path]`. - For [task type], follow `[path]`. ``` For a monorepo, keep shared instructions at the root and add a shorter AGENTS.md inside a package only when that package has different commands or constraints. ## How to improve an existing AGENTS.md Review the file against real agent behavior rather than adding every rule someone can imagine. 1. **Find instructions that apply only sometimes.** Move them to task-specific documentation or a skill. 2. **Delete facts the repository already makes obvious.** Directory listings and dependency summaries are common sources of duplication. 3. **Replace vague rules with observable behavior.** Name the command, file, boundary, or verification result. 4. **Find conflicts.** Check root, nested, override, user, and tool-specific instruction files. 5. **Test representative tasks.** Ask the agent which instructions it loaded, then observe whether it chooses the right tools and checks. 6. **Review the file after failures.** If the agent repeatedly makes the same repository-specific mistake, decide whether the fix belongs in instructions, docs, tests, linting, permissions, or product code. Do not treat the file as an append-only list of past frustrations. Every new rule should justify the permanent context it consumes. ## How do you verify that the file is being used? With Codex, start a fresh run in the target directory and ask it to list or summarize its active instruction sources. OpenAI documents commands for checking the root and a nested directory in its [AGENTS.md guide](https://learn.chatgpt.com/docs/agent-configuration/agents-md#verify-your-setup). If guidance looks stale, restart the run because Codex builds the instruction chain when the run begins. With Claude Code, use `/memory` to inspect loaded memory files. Test from the project root and from a package with its own CLAUDE.md. Check that the agent can state the applicable commands and constraints without inventing additional rules. Verification should also cover behavior. Give the agent a small representative task and check whether it: * chooses the expected package manager and commands; * reads the linked task-specific document when relevant; * respects the nearest scoped instruction file; * runs the stated checks before finishing; * avoids boundaries that should be enforced elsewhere. For a repeatable pass/fail method, see [Why AI Agents Ignore Instructions and How to Test Them](/learn/ai-development/how-to-test-ai-agent-instructions). ## Should an AI generate AGENTS.md for you? An agent can help inspect a repository and propose a draft, but a human should decide what remains in permanent context. The benchmark evidence is a reason to be skeptical of generated completeness. In the 2026 evaluation, LLM-generated context files tended to lower task success and raise cost. Anthropic's `/init` command can provide a starting point for CLAUDE.md, but its own best-practices guide tells teams to refine the result, keep it concise, and remove anything the model can infer. Use generation as an inventory step, not as approval. Ask the agent to identify non-standard commands, safety boundaries, and verification paths. Then delete aggressively, confirm every command, and review the file like production configuration. ## Who should maintain AGENTS.md? The team that owns the repository should maintain it through normal code review. Changes affect future agent work, so an instruction deserves the same scrutiny as a test configuration or build script. Review the file when: * a command or repository boundary changes; * a nested package gains different tooling; * several agent runs repeat the same avoidable mistake; * an instruction becomes enforceable through code or tooling; * the file grows without evidence that the new rules help. Builder's [CLAUDE.md guide](https://www.builder.io/blog/claude-md-guide) recommends using code review as one maintenance signal: when a reviewer catches a repeated, repository-specific mistake, decide whether the lesson belongs in CLAUDE.md. The useful part is the evidence from real work. The dangerous part is adding every correction forever without pruning older rules. A good AGENTS.md is not a complete description of the codebase. It is a short, maintained operating guide that helps an agent begin in the right place, use the right tools, and show evidence before it stops. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # Stay in the Loop and Own the Quality You Ship Source: https://docs.plannotator.ai/learn/ai-development/stay-in-the-loop-own-quality Use local plan, document, and code review with open-source Plannotator while Git, GitHub, or GitLab remains the record of the work and shipping decision. Review the agent's direction before implementation and its changes afterward. Focus human attention on product intent, consequential risks, and the shipping decision. A team workflow connects a request, shared planning context, agent execution, collaborative code review, verified code, and maintained documentation. A team workflow connects a request, shared planning context, agent execution, collaborative code review, verified code, and maintained documentation. In the illustration, “approved context” means a reviewed issue, specification, or plan. Workspaces does not add an approval gate. ## Own more than test output Agents can investigate, implement, test, and explain. People still have to decide whether the result is valuable, safe, operable, and understandable. | Quality question | Evidence to inspect | | - | - | | Does this solve the intended user or operator problem? | Request, plan, product behavior, current screenshots or examples | | Does it preserve important technical boundaries? | Diff, tests, data and API contracts, security and migration proof | | Can the team run and reverse it safely? | Rollout, observability, failure handling, rollback or recovery steps | | Will future people and agents understand the accepted behavior? | Maintained documentation, ADRs, specifications, and source links | ## Define quality before the agent writes code Passing tests is necessary, but it does not prove that a change solves the right problem. Before implementation, make the expected result reviewable: * What should change for the user or operator? * What is out of scope? * Which architecture, security, data, or compatibility constraints apply? * What evidence should the agent return? * What would make you stop, revise the plan, or roll back the change? For a small, reversible fix, those answers may fit in the agent conversation. For a consequential change, ask for a plan and review it before the agent proceeds. Open-source Plannotator can pause supported agents in plan mode. Add comments or edit the Markdown, select **Send Feedback**, and use Plan Diff when the agent submits a revision. Select **Approve** when the current local plan is ready for implementation. Plannotator's approval controls the active agent session. It does not identify a reviewer or create a shared authorization record. If the decision must be visible to other people, save the exact plan in Git, an issue, or another project system. When several people or agents need to work in one shared planning document, use [Plannotator Workspaces](https://help.plannotator.ai/workspaces/review-plans-and-technical-decisions). It does not turn version history into named approval or authorization. ## Let the agent work between review points After you approve the direction, the agent can investigate, implement, test, and explain the change. Ask it to stop when it reaches a decision the plan did not cover, such as an unsafe migration, an incompatible API, or a product behavior that still needs human judgment. This keeps routine execution moving while preventing the agent from silently choosing a consequential new direction. ## Review the code, not only the handoff When implementation is complete, compare the returned summary with the actual diff and validation evidence. Use `plannotator review` for local changes. Plannotator opens a browser diff viewer where you can comment on exact lines or ranges, suggest replacements, and return structured feedback to the active agent session. **Approve** returns the configured code-review approval message; it does not commit, merge, or deploy the change. For a GitHub pull request or GitLab merge request, open the provider URL with the supported Plannotator review command. Inspect the current diff and any supported artifacts, then use GitHub or GitLab to record comments, review status, and the final merge decision. Check at least: * whether the code matches the requested behavior; * whether the change stays within scope; * whether tests cover the important success and failure paths; * whether migrations, security boundaries, and compatibility claims are supported by evidence; * whether generated screenshots, HTML, reports, or recordings match the current revision; and * whether maintained documentation now describes the implemented behavior. An agent can help find bugs or explain unfamiliar code. Verify its findings against the repository and current revision before acting on them. ## Use separate sessions when several people review Each person runs a separate local review session. Sessions do not share cursor position, annotations, reviewer identity, or review state. Coordinate multi-person review through the repository provider: 1. Identify the exact commit or pull request revision under review. 2. Record comments and requested changes in GitHub, GitLab, or the project's normal review system. 3. Ask the agent to update the branch. 4. Review the new revision rather than relying on the previous summary. 5. Record the final verdict and merge state in the provider. For local-only work, commit or otherwise identify a checkpoint before handing the change to another reviewer. Separate Plannotator sessions can then inspect the same repository state without pretending they share live annotations. ## Use the lightest review that controls the risk More process does not automatically improve quality. | Change | Useful review path | | - | - | | Small, reversible local edit | Focused tests and local diff review | | Agent plan with uncertain scope | Plan review, feedback, then Plan Diff | | Change headed for GitHub or GitLab | Provider pull request or merge request plus code review | | Visual or behavior change | Code diff plus current screenshots, recording, or HTML evidence | | Security, data, migration, or public API change | Detailed plan, relevant owners in the project's normal system, and targeted code review | Choose review depth based on the consequence of a mistake, not the amount of code or AI used. ## Keep the record where future work will find it Local Plannotator sessions return useful feedback to the active agent, but the session is not the long-term record for a project. Preserve what matters in the systems already used to maintain the software: * commit the implemented code and current documentation to Git; * keep pull request or merge request discussion with the hosted change; * record unresolved work in an issue or task tracker; and * update maintained documentation when the accepted behavior changes. This gives the next person or agent current repository evidence instead of requiring access to an earlier private session. Annotate the proposed direction, send feedback, and compare the next version. Inspect the current diff and return line-specific feedback to the agent. Open hosted changes in Plannotator while the provider remains the system of record. Annotate supporting plans, reports, specifications, and rendered artifacts. ## Frequently asked questions ### Can several people review the same change with Plannotator OSS? They can each open the same repository revision or hosted pull request in separate sessions. Use GitHub, GitLab, or another project system to share comments and record the final state. ### Does Plannotator merge or deploy approved code? No. Local approval returns a result to the agent session. Your repository and provider controls determine what is committed, merged, or deployed. ### Should every AI-generated change have a formal plan? No. Use plan review when the proposed direction needs scrutiny before implementation. Small changes may be easier to verify directly in the diff. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # What Are Long-Horizon Tasks for AI Agents? Source: https://docs.plannotator.ai/learn/ai-development/what-are-long-horizon-tasks-for-ai-agents Long-horizon tasks require AI agents to sustain progress across dependent steps, context windows, and checkpoints. Learn how they differ from long-running jobs and how teams prepare them. A long-horizon task gives an AI agent one coherent objective with dependent stages. Later work uses context, decisions, experiments, or changes produced earlier. The agent must preserve state, make incremental progress, verify its work, recover from failed approaches, and continue toward one definition of done across many steps or context windows. Runtime alone does not make a task long-horizon. A slow command or one thousand independent summaries may consume hours without requiring sustained reasoning. Migrating a coupled system, debugging a complex failure, or building and validating a complete product slice can qualify because each stage changes what must happen next. The same AI agent follows one long route across a coupled technical landscape, preserving checkpoints, recovering from a dead end, and assembling a verified review packet. The same AI agent follows one long route across a coupled technical landscape, preserving checkpoints, recovering from a dead end, and assembling a verified review packet. ## A task horizon is not a stopwatch [METR's task-completion time horizon](https://metr.org/time-horizons/) estimates the duration a human expert would need for tasks an AI agent can complete at a stated reliability level. It measures task difficulty using human-expert completion time. It does not measure how long an agent process remains open. Keep these measures separate: | Measure | What it describes | | - | - | | Human task-completion time | How long a skilled person would need for the task | | AI wall-clock runtime | How long the agent process runs | | Context-window length | How much information the model can use at once | | Agent sessions | How many working sessions continue the objective | | Parallel workers | How many agents work on separable parts at the same time | A twelve-hour run may contain a long-horizon task, but duration does not prove it. Compare two jobs: * **Long batch:** summarize one thousand unrelated documents. * **Long-horizon task:** investigate, design, build, test, and explain one product change where every stage depends on the work before it. The first job can be divided into independent units. The second must preserve a growing body of decisions, evidence, and system state.

Task structure

Two kinds of long-running work

     

Long-running batch

Many separate outputs

  • Independent units
  • No shared state required
  • Failures stay local
         

Long-horizon task

One definition of done

  • Dependent stages
  • Decisions carry forward
  • Recovery uses saved state
## What makes an AI agent task long-horizon? Long-horizon work has: * one coherent outcome; * dependent stages; * accumulated state and decisions; * feedback that changes the next action; * checkpoints that preserve recoverable progress; * delayed but observable verification; * one shared definition of done. A failed experiment may eliminate one approach. A migration result may expose another system that must change. The agent must carry those findings forward instead of restarting each stage from the original prompt. ## Examples of long-horizon agent tasks Suitable examples include: * migrating a large system while preserving behavior; * debugging a coupled numerical or production failure; * building and validating a complete product slice; * conducting research where each experiment changes the next experiment; * producing coordinated code, design, documentation, screenshots, demo material, and launch assets for one product goal; * investigating and implementing a customer-specific workflow in a forward-deployed engineering engagement. These are not automatically suitable for unattended execution. They still need clear permissions, recoverable environments, useful feedback, and human decision boundaries. ## What does not qualify? These may run for a long time without becoming long-horizon tasks: * a very long prompt; * one slow build, query, training job, or command; * a large batch of independent classifications or summaries; * a recurring report that starts fresh each time; * a chat that remains open overnight; * unrelated agents producing disconnected outputs. Parallelism is an execution choice. It does not create a long horizon by itself. ## Why long-running AI agents are becoming practical Current agent products combine stronger models with execution systems that preserve an objective, use tools, delegate selected work, inspect results, and return artifacts for review. OpenAI positions GPT-5.6 Sol for complex, open-ended work. [Goal mode](https://learn.chatgpt.com/docs/long-running-work) gives a Codex task a persistent objective, constraints, and completion criteria. Ultra can use [subagents](https://learn.chatgpt.com/docs/agent-configuration/subagents) for separable work. Anthropic positions [Claude Fable 5](https://www.anthropic.com/claude/fable) for ambitious, long-running asynchronous projects. In an agent harness such as Claude Code, it can plan across stages, delegate selected work, check its results, and continue for extended sessions. Neither system guarantees a production-quality outcome. The result still depends on the task, context, execution environment, feedback, verification, and human review. ## Why agents lose the plot over long work [Anthropic's long-running agent harness research](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents) documents recurring failures: * attempting the entire project in one pass; * exhausting the context window in the middle of a change; * leaving partial work undocumented; * repeating approaches that already failed; * reporting completion after partial progress; * testing implementation details without validating the user flow; * allowing parallel agents to collide on shared dependencies. Context compaction helps a model continue a conversation, but it does not automatically preserve the exact system state, failed approaches, validation evidence, or next action another session needs. ## How to prepare a long-horizon task Give the agent a durable operating record instead of relying on the initial prompt and chat history. | Required element | What the team records | | - | - | | Outcome | The result the agent must produce | | Context | Relevant product, customer, design, code, and business information | | Constraints | Permitted systems, actions, data, and approaches | | Progress memory | Decisions, completed work, failures, and next steps | | Checkpoints | Recoverable and reviewable increments | | Test oracle | Tests, reference behavior, measurements, or other success signals | | Evidence | Code revisions, screenshots, traces, videos, documents, or reports | | Decision boundary | Questions and risks that must return to people | | Definition of done | Conditions that make the result ready for review | Keep the environment recoverable. Use version control, isolated branches or worktrees, repeatable setup commands, and checkpoints that another session can inspect. Each stage should leave the project clean enough for the next stage to continue without reconstructing the work. [Anthropic's research on long-running Claude](https://www.anthropic.com/research/long-running-Claude) recommends well-scoped work, explicit success criteria, progress memory, a test oracle, Git coordination, and occasional human oversight. Its examples also produced test gaps and mistakes, which is why the returned evidence still needs review. ## Should one agent work sequentially or use subagents? Use subagents for separable work such as independent research, test analysis, asset exploration, or a review of a finished change. Keep tightly coupled work sequential when every decision changes the downstream system. One main agent can preserve the objective and project state while delegating bounded tasks. Several agents can work in parallel when their outputs have clear interfaces and isolated workspaces. Do not treat more agents as proof of a longer or better task. Parallel agents that edit the same dependencies can create collisions and contradictory decisions. ## What should the agent return? Completion should mean ready for informed human review. A useful handoff can include: * the authorizing goal and exact version; * exact code revisions; * a map of the consequential changes; * validation results and anything skipped or failing; * screenshots, recordings, traces, and interactive explainers; * failed approaches and unresolved questions; * proposed updates to living documentation. The [AI coding agent handoff](/learn/code-context/ai-coding-agent-handoff) should connect each claim to revision-bound evidence. [Code review artifacts](/learn/code-review/what-are-code-review-artifacts) help reviewers inspect behavior that the diff cannot show. If code changes after a completed review, a [revision diff](/learn/code-review/what-is-a-revision-diff) isolates what moved. The [AI software factory guide](/learn/ai-development/what-is-an-ai-software-factory) shows how planning, execution, evidence, review, and learning can form one repeatable operating loop. ## The Night Shift is one team pattern The [AI agent Night Shift](/learn/ai-development/how-teams-run-ai-agent-night-shift) is one way to give dependent work uninterrupted time between two periods of human attention. The schedule does not define the task. ## Where Plannotator fits Open-source Plannotator does not run or schedule long-horizon agents. It lets you [review the plan](/open-source/workflows/plan-review) before execution and [review the returned changes](/open-source/workflows/local-changes) afterward. Plan version history and revision diffs help you check what changed between feedback rounds. ## Frequently asked questions ### How long must a task run to count as long-horizon? There is no universal wall-clock threshold. Long-horizon tasks have sustained dependencies across their stages. Formal evaluations may report a human-expert task-completion horizon at a particular success rate. ### What is the difference between long-horizon and long-running? Long-horizon describes the structure and difficulty of the task. Long-running describes the execution workflow that keeps an agent working through it. ### Does long-horizon mean fully autonomous? No. An agent can work asynchronously inside strict permissions, stop for important decisions, and return its result for review. ### Do long-horizon tasks require subagents? No. Subagents help with separable work. Tightly coupled tasks may be better served by one sequential agent that delegates only selected tasks. ### Can Codex and Claude perform long-horizon tasks? OpenAI and Anthropic provide models and agent workflows for long-running, multi-step work. Results still depend on the task, execution system, context, verification, and review boundary. ### Should a long-running agent merge or deploy its own work? Not by default. Integration and deployment authority are separate decisions with their own permissions and blast radius. See how teams approve one goal, let agents work asynchronously, and review the returned code and artifacts together. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # What Are Rich References for AI Agents? Source: https://docs.plannotator.ai/learn/ai-development/what-are-rich-references Rich references give AI agents concrete context such as repositories, HTML prototypes, specs, tests, and rubrics instead of longer prompt instructions. As AI models improve, getting better results can require less prompt scaffolding and better context. Instead of writing a longer rulebook, give the agent concrete material that shows what you want it to build and what good work looks like. Anthropic calls these materials **rich references**. They can include repositories, existing code, reference websites, wireframes, HTML prototypes, specifications, test suites, reference implementations, and rubrics that describe your team's standards. A central AI coding task connects to rich references including an HTML prototype, code example, tests, and a rubric. A central AI coding task connects to rich references including an HTML prototype, code example, tests, and a rubric. ## Why better models can need fewer instructions The message you type is only one part of an agent's context. The model may also receive a system prompt, repository instructions, skills, memory, tool definitions, and files it opens while working. In [The new rules of context engineering for Claude 5 generation models](https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models), Anthropic reports that it removed more than 80 percent of Claude Code's system prompt for newer Claude models with no measurable loss on its coding evaluations. The team found that many older instructions were now overconstraining the model or conflicting with one another. The article describes several related changes: * Replace rigid rules with guidance that lets the model use judgment. * Design clear tools and interfaces instead of teaching every use through examples. * Load detailed guidance when it becomes relevant instead of putting everything up front. * Keep repository instruction files lightweight. * Give the model richer references instead of relying only on written plans and specifications. This is a report about Anthropic's experience with newer Claude models, not proof that every model or task needs fewer instructions. Safety boundaries and important constraints still belong in the context. Do not assume that more prompt technique produces a better result when the model could learn more from the work itself. ## What is a rich reference? A rich reference is concrete material that an agent can inspect and use while it works. The word **rich** does not mean long, complicated, or heavily structured. It means the reference contains more useful information than a prose description alone. | Reference | What it gives the agent | | - | - | | Repository or codebase | Existing architecture, conventions, naming, and implementation patterns | | Reference website | A working example of layout, behavior, and interaction | | Wireframe or HTML prototype | Spatial structure and interface behavior the agent can inspect directly | | Product or technical specification | Requirements, constraints, and expected outcomes | | Test suite | Executable examples of the behavior that must pass | | Reference implementation | Existing code that demonstrates how the result should work | | Rubric | The team's standards for judging quality | A Markdown plan can still be a good reference. Anthropic's point is not that plans or specifications are obsolete. Newer models can also work from more expressive material. ## Why richer references can beat longer prompts Suppose you want an agent to build a settings page. Give it concrete sources for the layout, repository conventions, required behavior, test cases, and quality bar: * an HTML wireframe showing the layout; * an existing settings page that demonstrates the product's conventions; * the specification for the new behavior; * tests for the important states; and * a design rubric describing what your team accepts. Anthropic specifically recommends code when possible because it gives the model high-fidelity instructions in a form it understands well. The article also says that an HTML mockup will generally communicate a design better than a prose description or screenshot. ## Examples of rich references ### Building a user interface ```text theme={null} Build the API key settings page. References: - wireframes/api-keys.html shows the intended layout and interaction states. - apps/web/settings/profile.tsx shows the existing settings-page conventions. - specs/api-keys.md defines creation, display, and revocation behavior. - tests/api-keys.spec.ts covers the required states. - rubrics/product-ui.md defines our accessibility and visual-quality standards. ``` The agent still receives a clear task. The references provide the detail that would otherwise turn the prompt into a small design document. ### Porting existing behavior ```text theme={null} Port the retry behavior from the reference repository into this service. References: - reference-repo/src/retry.ts is the implementation to study. - src/network/request.ts is the integration point in this repository. - tests/network/retry.test.ts defines the behavior we need to preserve. - rubrics/typescript.md defines our local TypeScript standards. ``` The source function communicates the algorithm. The target repository communicates local conventions. The tests and rubric make the acceptance bar visible. ### Designing an API An API task might use a product specification, an existing API with similar behavior, a test suite, and a team rubric for API design. The specification states the outcome. The existing API demonstrates conventions. The tests define observable behavior. The rubric helps the agent evaluate naming, errors, pagination, and compatibility. ## How to give an agent rich references 1. **State the outcome.** Tell the agent what it needs to build, change, or decide. 2. **Choose a small set of useful references.** Include only the material that helps with this task. 3. **Explain each reference's role when it is not obvious.** Say whether it defines behavior, demonstrates style, provides an example, or sets the quality bar. 4. **Let the agent inspect the material.** Do not rewrite the entire reference into the prompt. 5. **Verify the result against the references.** Run the tests, compare the implementation with the prototype, and apply the rubric. ## What to avoid Rich references do not fix an unclear task. The agent still needs to know the intended outcome. Avoid: * attaching a whole repository when one package or implementation is the useful example; * providing several references that disagree without saying which one controls; * treating example code as a requirement when the agent is only meant to learn from it; * writing a rubric with generic advice such as "make it high quality"; * using references to hide a decision the team has not made; and * removing safety rules or hard product constraints just because the model has better judgment. ## Where Plannotator fits [Open-source Plannotator](/open-source/) lets you review plans, Markdown, HTML, local code changes, pull requests, and merge requests with the coding agent that produced them. A team can review an HTML prototype or implementation plan before the agent builds from it, then review the resulting change against the same material. [Plannotator Workspaces](https://help.plannotator.ai/workspaces/) is the separate commercial product for sharing plans and technical documents across teammates and agents. A workspace can keep a main plan beside specifications, HTML prototypes, wireframes, and team guidance. Plannotator does not decide which context an agent needs. It gives people and agents a shared place to inspect and discuss the material they are using. ## Frequently asked questions ### Is a rich reference just a link? No. The useful part is the material the agent can inspect. A link may be how the agent reaches a repository, prototype, specification, test suite, or rubric. ### Do rich references replace prompts? No. The prompt should still state the task, outcome, and important constraints. References carry the detailed context that is easier to show than describe. ### Do I need every type of reference? No. Use the smallest useful set. A code change might need only the target file, a similar implementation, and its tests. A user-interface task may benefit from an HTML prototype and a design rubric. ### Are Markdown plans and specifications no longer useful? They are still useful. Rich references expand the available formats. They do not require teams to stop writing plans or specifications. ### Is "rich references" an industry standard? No. Anthropic used the phrase in its July 2026 article and [the accompanying X article](https://x.com/trq212/status/2080710971228918066). It is a useful description, not a formal protocol or specification. See when a visual HTML artifact communicates more than a text-only document. *Drafted and last reviewed July 24, 2026. Maintained by the Plannotator documentation team.* # What Is a Claude File? How CLAUDE.md Works Source: https://docs.plannotator.ai/learn/ai-development/what-is-a-claude-file A CLAUDE.md file gives Claude Code project instructions. Learn when Claude loads it, how nested files work, and how it differs from auto memory. A **Claude file** usually means `CLAUDE.md`: a plain Markdown file that gives Claude Code instructions about a project. Claude adds the file to its context, then uses it while it reads code, plans work, edits files, and runs commands. `CLAUDE.md` is not a model, a database, or a hidden configuration format. It is a document for guidance that should apply across many tasks. Totman places a root CLAUDE.md at session start while a coding agent enters a repository where top-level and apps/web CLAUDE.md files join the same context path. Totman places a root CLAUDE.md at session start while a coding agent enters a repository where top-level and apps/web CLAUDE.md files join the same context path. ## When does Claude Code load CLAUDE.md? Claude Code looks for instruction files when a session starts. It also loads more specific files when it begins working in a nested directory. | Location | When Claude loads it | Scope | | - | - | - | | `~/.claude/CLAUDE.md` | At the start of every session | Every project for one user | | `./CLAUDE.md` or `./.claude/CLAUDE.md` | At the start of a session launched in that project | The project and its files | | `./CLAUDE.local.md` | At the start of a session, after the shared file at the same level | One user's local copy of the project | | `apps/web/CLAUDE.md` | When Claude reads a file inside `apps/web` | That directory and its children | | A file imported with `@path/to/file` | When the CLAUDE.md that imports it loads | The same scope as the importing file | Claude also reads applicable `CLAUDE.md` files in parent directories. This lets a monorepo keep shared instructions at the root and package-specific instructions closer to each package. Anthropic documents the full search order in its [Claude Code memory guide](https://code.claude.com/docs/en/memory). ## How often does Claude read the file? Claude loads the applicable files when a session starts. It does not reread every `CLAUDE.md` before every reply. If you edit the file during a session, Claude picks up the change after the next `/compact` or when you open `/memory`. Otherwise, start a new session. After compaction, Claude restores the root instructions. It reloads a nested file when it next reads a file in that directory. An imported file also consumes context. Imports can reduce duplication, but they do not make the imported text free. ## Which CLAUDE.md file wins? Claude combines the files it finds from broad scope to narrow scope. A file closer to the current work appears later in the combined context, but it does not erase the broader file. Do not rely on conflicting instructions. Keep shared rules at the project root. Put only the differences in nested or local files. ## Is CLAUDE.md the same as memory? No. Claude Code uses the word *memory* for more than one feature, but the files have different owners and jobs. | Source | Who writes it | What it should contain | Where it lives | | - | - | - | - | | `CLAUDE.md` | You and your team | Stable commands, constraints, and project guidance | The repository or your home directory | | Auto memory | Claude Code | Notes Claude chooses to keep across sessions | `~/.claude/projects//memory/` | | Conversation history | You and Claude | The current task and its working context | The current or resumed session | Treat `CLAUDE.md` as standing instructions, not as a diary of past sessions. Auto memory is machine-local. Claude loads the first 200 lines of its `MEMORY.md` at startup and reads linked topic files when needed. The [Claude Code memory guide](https://code.claude.com/docs/en/memory) explains both systems. ## Can Claude ignore CLAUDE.md? Yes. Claude Code adds `CLAUDE.md` as a user message after its system prompt. The file guides the model, but it does not enforce a rule. Use [hooks](https://code.claude.com/docs/en/hooks) or permissions when a check must run every time. Use `CLAUDE.md` to explain what good work looks like and which commands Claude should use. ## How can you check what Claude loaded? Run `/memory` in Claude Code. It lists the instruction files loaded for the session and lets you open them. For deeper debugging, the [`InstructionsLoaded` hook](https://code.claude.com/docs/en/hooks#instructionsloaded) can log each loaded instruction file. ## What should go in CLAUDE.md? Include facts Claude cannot safely infer from the repository: * build and test commands; * rules that differ from common defaults; * files or directories it must not change; * checks required before work is complete; * links to detailed docs Claude should read only when needed. Keep it short. Remove general advice and facts the code already makes clear. For a writing checklist and examples, read [How to Write a Good AGENTS.md (or CLAUDE.md)](/learn/ai-development/how-to-write-a-good-agents-md). ## How is CLAUDE.md different from AGENTS.md? Claude Code reads `CLAUDE.md` by default. It does not load `AGENTS.md` by name. If your team uses both Claude Code and agents that support `AGENTS.md`, keep one source of truth. A `CLAUDE.md` file can import the shared file with `@AGENTS.md`, or you can use a symbolic link where your tools and operating systems support one. Anthropic describes this setup in its [CLAUDE.md context guide](https://support.claude.com/en/articles/14553240-give-claude-context-claude-md-and-better-prompts). *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # What Is a Coding-Agent Field Guide? Source: https://docs.plannotator.ai/learn/ai-development/what-is-a-coding-agent-field-guide A coding-agent field guide turns repeated review corrections into evidence-backed project lessons that agents load only for relevant work. A coding-agent field guide is a small, project-specific collection of lessons derived from reviewed work. Each lesson records a mistake or surprise, the accepted behavior, the evidence behind it, where it applies, and how to verify it. Agents read a short index, then open only the entries relevant to the current task. This keeps repeated corrections available without adding every lesson to `AGENTS.md`, a memory file, or the prompt for every session. Use the open-source [coding-agent field guide starter](https://github.com/plannotator/coding-agent-field-guide) to add this workflow to a repository. It uses Markdown, repository instructions, and review evidence. It does not require a vendor-specific runtime. Totman turns one reviewed correction into a verified field-guide lesson linked to its source evidence. Totman turns one reviewed correction into a verified field-guide lesson linked to its source evidence. ## What belongs in a field guide A field-guide entry should come from an observed project case. It needs: * a commit, pull request, issue, test, contract, decision, or other inspectable source; * the project-specific behavior that surprised the reviewer; * guidance narrow enough to apply without becoming a universal rule; * a good example and a bad example with different behavior; * a verification method; * exceptions and applicable scope; * a human decision before the entry becomes active. Most review comments should not become entries. Fix the current task and stop unless the correction is likely to recur or protects a consequential project boundary. ## How it differs from other agent context | Artifact | What it should contain | | - | - | | `AGENTS.md` or `CLAUDE.md` | Small, always-loaded commands, constraints, and pointers | | Memory | Persisted facts, preferences, or session state | | Skill | A repeatable workflow, sometimes with scripts or tools | | Runbook | An operational procedure | | Retrospective | Analysis of one event | | Conversation archive | Raw history for replay or audit | | Field guide | Reviewed project lessons loaded only when relevant | The field guide does not replace these artifacts. Its root instruction is usually a short pointer: ```md theme={null} ## Project field guide Use `field-guide/index.md` to find project-specific lessons derived from reviewed work. Read only entries relevant to the current task. Treat current code, tests, contracts, and accepted decisions as authoritative when they conflict with the guide. ``` The index says what each entry is for and where it applies. The entry contains the evidence and detail. An agent working on a responsive header should not load a lesson about asynchronous job persistence. In a broader [AI software factory](/learn/ai-development/what-is-an-ai-software-factory), field-guide entries preserve reusable operating rules from reviewed work while current code, tests, contracts, and decisions remain authoritative. ## Turn reviewed work into one lesson Use this sequence after the work has reached an accepted result: 1. State the correction in one sentence. 2. Confirm that it is project-specific and likely to matter again. 3. Search the current index for a duplicate or conflict. 4. Check current code, tests, contracts, and decisions. 5. Decide whether the lesson belongs in the guide or in a stronger artifact. 6. Draft the smallest guidance that explains the behavior and consequence. 7. Add evidence, scope, examples, verification, and exceptions. 8. Leave the entry as a draft. 9. Have a person accept, revise, reject, merge, or graduate it. 10. Add only accepted entries to the active index. The [distillation workflow](https://github.com/plannotator/coding-agent-field-guide/blob/main/starter/workflows/distill-reviewed-session.md) provides the copyable version. ## Graduate enforceable lessons Some corrections should not remain advisory Markdown. Graduate a lesson when a stronger artifact can enforce or explain it: | Lesson | Stronger destination | | - | - | | A path form must always be rejected | Test and shared predicate | | Generated code must satisfy a mechanical rule | Linter or formatter | | A value can occupy only valid states | Type or schema | | Every change must pass the same command | CI check | | A task follows a repeatable procedure | Skill or runbook | | A behavior is part of the product contract | Contract or decision record | A superseded field-guide entry can remain as a short lifecycle example that points to the stronger artifact. Future agents should follow the test, type, contract, or current code rather than treating the historical entry as the authority. ## Keep deterministic checks separate from judgment Tests, builds, type checks, lint, and contract checks answer different questions from a review rubric. A required failing check must block acceptance. A high rubric rating cannot offset it. Use anchored judgment dimensions for qualities such as scope, evidence, risk, correctness, test quality, and failure behavior, then state why each rating applies. The repository includes exercised [plan-review](https://github.com/plannotator/coding-agent-field-guide/blob/main/starter/rubrics/plan-review.md) and [code-review](https://github.com/plannotator/coding-agent-field-guide/blob/main/starter/rubrics/code-review.md) rubrics. Their evaluation fixtures show adequate and inadequate work for the same bounded cases. ## A public Plannotator example The repository applies the method to three public Plannotator OSS changes: * feedback copied back to an agent must preserve whether the person reviewed a plan, file, or message; * a long-running Guided Review result must remain attached to the pull request or worktree where it started; * a Windows cross-drive path returned by `path.relative()` must not be treated as repository-relative. The third lesson graduated into a shared helper and regression test. The [worked example](https://github.com/plannotator/coding-agent-field-guide/tree/main/examples/backnotprop-plannotator) links each claim to its public issue, pull request, commit, and tests. Plannotator is the example, not a dependency. Feedback from another review surface can enter the same workflow. ## Set up the starter 1. Copy the repository's [`starter/field-guide`](https://github.com/plannotator/coding-agent-field-guide/tree/main/starter/field-guide) directory into your project. 2. Add the [`AGENTS.md` fragment](https://github.com/plannotator/coding-agent-field-guide/blob/main/starter/AGENTS.md.fragment) to your repository instructions. 3. Copy the two workflows and the rubrics your team will use. 4. Keep the index short. 5. Add no active entry until a person verifies its evidence, scope, and exceptions. The starter uses Markdown and one small YAML source manifest in the worked example. It has no CLI, database, vector search, hosted memory service, or vendor-specific runtime. ## Using Plannotator feedback [Plannotator OSS](https://github.com/backnotprop/plannotator) lets a person review plans, documents, local changes, pull requests, and merge requests, then return comments to the coding agent. That returned feedback can be one input to the distillation step. Use the final accepted change and current project sources as evidence. Do not publish raw conversations, private code, credentials, customer information, or comments that a public source cannot support. ## Sources and limits The method combines several documented practices: * Cursor described an experimental Field Guide used by an agent swarm, including a short injected index and records of surprising encounters. ([Cursor](https://cursor.com/blog/agent-swarm-model-economics)) * ThePrimeagen described recording human corrections in Markdown with commit references and having agents retrieve relevant lessons. His thread does not say that he uses Plannotator. ([Thread](https://x.com/ThePrimeagen/status/2081066227619836308?s=20)) * Anthropic recommends lightweight repository instructions, progressive disclosure, rich references, deterministic checks, and independent verification. ([Context engineering](https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models), [verification loops](https://claude.com/blog/building-verification-loops-in-claude-code-with-skills)) * OpenAI and Google document task-specific evaluation, deterministic checks, human judgment, model graders, and grader-gaming risks. ([OpenAI](https://developers.openai.com/api/docs/guides/evaluation-best-practices), [Google](https://google.github.io/agents-cli/guide/evaluation/)) Saving a lesson changes the context available to a future agent. It does not train or fine-tune the model. A field guide can also become stale, reward its own wording, or retrieve an irrelevant lesson. Keep current project sources authoritative, record disagreements, and audit the guide after material project changes. ## Frequently asked questions ### Is a field guide the same as agent memory? No. Memory may preserve facts, preferences, or session state. A field guide contains reviewed project lessons with evidence, scope, verification, and explicit status. ### Should a field guide replace `AGENTS.md`? No. Keep hard constraints, required commands, and a pointer in `AGENTS.md`. Put detailed lessons behind the field-guide index so agents can load them only when relevant. ### Should every review comment become an entry? No. Most comments should fix only the current task. Preserve a lesson when it is likely to recur, protects a consequential boundary, and cannot be enforced more clearly elsewhere. ### Can an agent create entries automatically? An agent can draft an entry from reviewed work and durable sources. A person should decide whether to accept, revise, reject, merge, or graduate it. ### Does a field guide improve the model? It changes the model's task context. It does not prove that the model itself improved. Measure repeated corrections, relevant and irrelevant retrievals, context cost, and maintenance time before claiming that the workflow helped. # What Is an AI Artifact? Definition and Examples Source: https://docs.plannotator.ai/learn/ai-development/what-is-an-ai-artifact An AI artifact is a reusable output created by an AI system, such as a document, image, application, plan, report, video, or code walkthrough. Learn how artifacts differ from chat responses and how people use them. An **AI artifact** is an output created or substantially assembled by an AI system that becomes a separate thing people can inspect, edit, run, share, review, or reuse. Examples include a research report, implementation plan, image, slide deck, interactive prototype, dashboard, code walkthrough, test report, or product video. The term does not describe one file format or one company's feature. It describes the role the output plays after the model produces it. A sentence in a chat is usually a response. A structured plan saved for a team, an HTML explainer opened in a browser, or a video attached to a product review can become an artifact. A generic AI agent turns a short chat into standalone plan, diagram, interactive prototype, video, code walkthrough, and report artifacts while Totman curates the finished work. A generic AI agent turns a short chat into standalone plan, diagram, interactive prototype, video, code walkthrough, and report artifacts while Totman curates the finished work. ## What makes an AI output an artifact? There is no universal technical standard for AI artifacts. Products use the word differently, and some products provide the same experience under names such as *canvas*, *document*, or *preview*. Two practical tests are especially useful: 1. **It can be inspected independently.** Someone can review the artifact itself instead of reconstructing it from the surrounding conversation. 2. **It supports further work.** People or agents can edit, share, reference, approve, publish, or build on it. An artifact does not need to satisfy every condition perfectly. A generated image downloaded from a chat may have no version history, but it is still a reusable output. A live incident page may update continuously and preserve a much richer lifecycle. ## What are common examples of AI artifacts? AI systems now produce artifacts across most forms of knowledge work. | Artifact type | Examples | What it helps people do | | - | - | - | | Documents | Plans, specifications, reports, briefs, research summaries, meeting notes | Read, edit, approve, and preserve reasoning | | Visuals | Images, diagrams, annotated screenshots, presentations, design explorations | Compare options and understand spatial or visual information | | Interactive work | HTML explainers, dashboards, calculators, prototypes, small applications | Explore information, test an idea, or use a purpose-built interface | | Software work | Source code, pull request walkthroughs, architecture maps, release checklists | Understand, implement, and review a change | | Evidence | Test reports, browser traces, benchmark charts, recordings, validation summaries | Check whether a claim about the work is supported | | Media | Audio, video, animation, product demos | Communicate behavior, narrative, or a finished experience | The same output can play several roles. An HTML file might be a prototype during planning, a shared explainer during implementation, and review evidence when the work is ready to ship. ## How are people using AI artifacts today? Different products reveal different parts of the pattern. ### Claude Artifacts separate substantial work from chat Anthropic uses **Artifacts** as a product name. Claude places substantial standalone content in a dedicated surface beside the conversation so people can edit, reuse, and share it. Anthropic's examples include documents, visualizations, tools, games, and interactive applications. See [What are artifacts and how do I use them?](https://support.claude.com/en/articles/9487310-what-are-artifacts-and-how-do-i-use-them). Our [Claude Artifacts guide](/learn/ai-development/claude-artifacts) covers supported forms, representative examples, HTML behavior, versions, publishing, sharing, and the manual workflow for annotating an exported file. Claude Code applies the idea to agent work. It can publish a session's output as a live page, such as a pull request walkthrough, system explainer, dashboard, incident timeline, or release checklist. The page can update at the same link as the session progresses and retain version history. See [Claude Code now supports artifacts](https://claude.com/blog/artifacts-in-claude-code). ### Coding tools are making agent output easier to find Visual Studio Code's preview [Artifacts panel](https://code.visualstudio.com/docs/chat/chat-artifacts) collects resources such as plans, screenshots, documents, links, and agent-selected files beside a chat or agent session. It can surface outputs by file pattern or media type, accept an artifact list set by an agent, and keep subagent artifacts grouped by their source. This solves a basic problem: an agent may create useful work without making that work easy to rediscover. A plan buried in a transcript and a plan listed as a named project resource contain similar text, but they do not provide the same working experience. ### Other products use similar ideas without the artifact name [ChatGPT Canvas](https://help.openai.com/en/articles/9930697-what-is-the-canvas-feature-in-chatgpt-and-how-do-i-use-it) gives writing and code a separate editing surface with inline feedback, version restoration, rendered HTML or React previews, and export options. [Gemini Canvas](https://blog.google/products-and-platforms/products/gemini/gemini-collaboration-features/) similarly lets people create, edit, and share documents and code while previewing generated prototypes. These products do not need to call every output an artifact to participate in the same shift. The useful work is moving out of an undifferentiated chat stream and into a form designed for editing, viewing, sharing, or execution. ## How is an AI artifact different from a chat response? | Chat response | AI artifact | | - | - | | Read in conversational order | Opened as its own object or surface | | Depends heavily on surrounding messages | Carries enough structure to inspect independently | | Often temporary and difficult to find later | Saved, linked, downloaded, published, or indexed | | Optimized for answering the next turn | Shaped for a specific job, audience, or decision | | Usually reviewed by the person in the chat | Can be shared with teammates or passed to another agent | The boundary is contextual. A Markdown response pasted into a repository may become the team's specification. A generated chart becomes an artifact when someone saves it for a report or review. A code block becomes an artifact when it is written to a file, tested, and handed to another person or agent. ## When is an AI artifact more useful than another answer? An artifact is useful when the work needs a shape that chat does not provide well. ### The information is large or spatial A long investigation may need a timeline, dependency map, annotated source, or filterable table. Breaking that material into conversational messages makes relationships harder to see. ### People need to compare or interact with the output A designer might need six interface directions side by side. An engineer might need controls for testing animation values. An operator might need a dashboard that filters incidents by service and time range. The interaction is part of the explanation. ### A team needs one shared object A plan can move through comments and approval. A report can become a handoff. A prototype can help product, design, and engineering discuss the same behavior. The artifact gives the group something specific to point at and revise. ### The output supports a consequential decision Screenshots, recordings, traces, test results, and benchmark reports can show whether completed work behaves as claimed. Our guide to [code review artifacts](/learn/code-review/what-are-code-review-artifacts) explains how that evidence fits beside a code diff. ## Why is HTML becoming a common AI artifact format? AI can generate documents in many formats, but HTML is becoming useful when an artifact needs hierarchy, visual density, or interaction. An HTML artifact can combine prose, tables, code, images, SVG diagrams, responsive layouts, filters, tabs, and small controls in one portable page. A coding agent can build that page from repository files, connected tools, test output, and session context. Claude Code engineer Thariq Shihipar describes this workflow in [The unreasonable effectiveness of HTML](https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html). His examples include implementation plans, design explorations, pull request explainers, incident reports, and purpose-built editing interfaces. Our [HTML versus Markdown guide](/learn/code-context/ai-agent-html-vs-markdown) covers the practical tradeoffs, including source review, accessibility, security, and version history. HTML is not automatically the right format. Markdown remains easier to diff and maintain for text-first documents. A PNG is better for a fixed image. A video is better for motion. The artifact's job should determine its format. ## Are AI artifacts the same as build artifacts? Not necessarily. GitHub defines a [workflow artifact](https://docs.github.com/en/actions/concepts/workflows-and-actions/workflow-artifacts) as a file or collection of files produced during a workflow run and retained after the job completes. Examples include logs, test results, screenshots, binaries, performance output, and coverage reports. An AI artifact is defined here by its relationship to AI-produced work. A workflow artifact is defined by its relationship to an automated workflow. The categories can overlap. For example, a coding agent may trigger a browser test whose workflow uploads screenshots and a trace. Those files are workflow artifacts, agent outputs, and potential review evidence at the same time. ## What can go wrong with AI artifacts? Polished output can look more authoritative than it is. The main risks are operational, not cosmetic. * **It may be wrong.** A diagram can omit an important dependency. A report can misread its sources. A prototype can demonstrate behavior that the implementation does not provide. * **It may become stale.** A walkthrough of one code revision may no longer describe the current branch. A plan may survive after the team changes the decision. * **Its provenance may be unclear.** Reviewers may not know which sources, tools, model, prompts, or execution results contributed to it. * **It may expose sensitive information.** Reports, screenshots, traces, and generated pages can contain source code, customer data, credentials, or internal discussion. * **It may depend on hidden infrastructure.** An interactive page can stop working when a package, network request, account, or hosted runtime disappears. * **It may be difficult to find again.** Saving more outputs does not help if they remain scattered across chats, repositories, downloads, and temporary links. Treat an artifact as a claim with a lifecycle. Identify what it is for, what source material it represents, when it was produced, who can access it, and how long it should remain authoritative. ## How should a team review an AI artifact? Use questions that match the artifact's job: 1. **What decision or task does this artifact support?** A plan, prototype, validation report, and finished media asset require different review standards. 2. **Which sources and version does it represent?** Link the code revision, dataset, request, or other source record when accuracy depends on it. 3. **What can a reviewer verify directly?** Preserve underlying tests, source files, citations, and execution results instead of relying only on the artifact's summary. 4. **What does the artifact leave out?** A polished walkthrough may cover the intended path while omitting failure states, accessibility, security, or operational behavior. 5. **Where will it live?** Decide whether the artifact is temporary exploration, durable documentation, review evidence, or a maintained product surface. An artifact can reduce the work required to understand a complicated result. It should not reduce the standard of evidence used to accept that result. ## How current products organize artifacts Current products provide features such as: * artifacts that update while an agent continues working; * outputs grouped by project, session, agent, or subagent; * version history and stable links; * direct editing and annotation; * artifacts connected to the plans, code, tasks, and evidence they describe; * one artifact becoming useful context for the next agent or workflow. Open-source Plannotator can [review Markdown and text documents](/open-source/workflows/documents), [render and annotate HTML](/open-source/workflows/html), and collect supported artifacts referenced in a [pull request or merge request](/open-source/workflows/pull-requests). AI artifacts remain more useful when they are understandable and reachable after the session that created them. The experimental [Artifact Server](/open-source/artifact-server) project provides a local workspace for indexing, previewing, editing, and organizing files created or used by agents. ## Frequently asked questions ### Is every AI-generated response an artifact? Not usually. A short conversational answer is simply a response. It becomes artifact-like when it is saved or presented as a distinct object that can be edited, shared, reviewed, run, or reused. ### Are AI artifacts only a Claude feature? No. Anthropic uses **Artifacts** as a product name, but ChatGPT Canvas, Gemini Canvas, VS Code's Artifacts panel, coding-agent outputs, and generated files provide related experiences. The general term is broader than any one product. ### Can an AI artifact be interactive? Yes. An artifact can be an HTML explainer, dashboard, prototype, calculator, game, or small application. Interactivity is useful when the reader needs to explore options or manipulate information rather than only read it. ### Can an AI artifact be wrong? Yes. An artifact is generated output, not proof of correctness. Review its sources, version, assumptions, and underlying evidence before using it for an important decision. ### Should teams keep every artifact an agent creates? No. Keep artifacts that support a decision, preserve useful context, demonstrate behavior, document current knowledge, or can be reused. Temporary explorations and redundant outputs can be discarded according to the team's retention rules. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # What Is an AI Software Factory? How Agent-Native Software Delivery Works Source: https://docs.plannotator.ai/learn/ai-development/what-is-an-ai-software-factory An AI software factory is a repeatable delivery system that turns intent and context into agent-executed, evidence-backed software changes, then learns from the result. An **AI software factory** is a repeatable software-delivery system that turns a signal into explicit intent, grounded context, an executable plan, implemented changes, verification evidence, a shipping decision, and lessons for the next cycle. AI agents can perform much of the execution, but the system also defines inputs, controls, evidence, decision rights, and feedback. One coding agent, one specification workflow, or one CI/CD pipeline is only a component. The phrase does not have one accepted agent-native definition. This guide offers a vendor-neutral operating model based on primary sources and established software-delivery practices. It does not describe a Plannotator product architecture. Two teammates and Totman plan a feature in a two-level software factory while agent work cells build and test it, GitHub, Sentry, and event monitors return signals, and a third teammate reviews evidence before release. Two teammates and Totman plan a feature in a two-level software factory while agent work cells build and test it, GitHub, Sentry, and event monitors return signals, and a third teammate reviews evidence before release. ## From software factories to agent-native delivery “Software factory” predates coding agents. A 2006 Microsoft article described a software factory as a collection of tools, reusable code, documentation, reference implementations, templates, and guidance that automates accepted patterns and standards. The emphasis was industrialized reuse and consistent construction, not autonomous agents. ([Microsoft](https://learn.microsoft.com/en-us/archive/msdn-magazine/2006/december/service-station-web-service-software-factory)) The term later became common in enterprise delivery programs. In AWS's BMW case study, “Software Factory” means a shared set of processes, methods, and tools supporting thousands of developers and a large continuous-integration workload. Those figures describe BMW's program as reported by AWS. They are not benchmarks for every factory. ([AWS](https://aws.amazon.com/solutions/case-studies/software-factory-bmw/)) The current agent-native use keeps the repeatability and control, but changes who can perform the work. Agents can inspect repositories, draft plans, edit code, run tools, collect evidence, and revise their work. That makes context quality, delegated authority, stop conditions, evaluation, and traceable decisions part of the production system. ### Is an AI software factory the same as DevOps or platform engineering? No. DevOps is a set of cultural and technical practices that joins software development and operations. Platform engineering builds and maintains an internal platform, often with paved paths that developers can use safely. CI/CD automates integration, testing, packaging, and delivery. ([Google Cloud on DevOps and platform engineering](https://cloud.google.com/discover/platform-engineering-vs-devops), [Google Cloud on CI/CD](https://cloud.google.com/blog/topics/developers-practitioners/devops-and-cicd-google-cloud-explained)) An AI software factory can use all three. Its distinguishing scope is the controlled path from an incoming signal through intent, context, agent work, proof, judgment, shipping, and learning. In addition to “Can this change build and deploy?”, it asks “Why should it exist, what authority did the agent have, what evidence supports the result, and what should the next run learn?” ## Why one agent, specification workflow, or pipeline is not a factory A coding agent can complete a bounded task without a standard intake, durable evidence, shipping authority, or feedback loop. A specification-driven workflow can structure intent and plans without executing or operating the resulting software. A CI/CD pipeline can test and deploy a change without deciding whether the change serves the right user problem. Calling any one of these a factory hides the missing controls. | System | Primary job | Typical boundary | What it does not establish by itself | | - | - | - | - | | Coding agent | Inspect, edit, run tools, and return work | One task or session | Standard intake, decision rights, durable evidence, release policy, or organizational learning | | Specification-driven workflow | Turn a request into requirements, design, and tasks | Intent through implementation plan | Execution, independent proof, deployment, operations, or feedback | | CI/CD pipeline | Integrate, build, test, package, and deliver changes | Commit through release | User intent, contextual grounding, plan quality, or ambiguous product judgment | | AI software factory | Operate the full controlled delivery loop | Signal through learning | A guarantee of correctness, good strategy, or safe autonomy | The factory contains tools and workflows. It is not the name of one tool. ## How an AI software factory works The eight-stage model below is Plannotator's independent editorial synthesis. It is not copied from a vendor architecture and is not a list of Plannotator product capabilities. Eight-stage AI software factory loop from Signal through Intent, Context, Plan, Execute, Prove, Judge and ship, and Learn, with learning feeding the next cycle. Eight-stage AI software factory loop from Signal through Intent, Context, Plan, Execute, Prove, Judge and ship, and Learn, with learning feeding the next cycle.

Eight-stage agent-native delivery loop

Each stage produces an inspectable input for the next. Learn feeds the next Signal, Intent, Context, or gate.

  1. 1. Signal

    Capture a user need, incident, support pattern, obligation, or measured opportunity.

  2. 2. Intent

    State the desired result, scope, constraints, owner, and observable acceptance criteria.

  3. 3. Context

    Select current code, data, decisions, examples, conflicts, and freshness notes.

  4. 4. Plan

    Order the changes, dependencies, risks, verification steps, and stop conditions.

  5. 5. Execute

    Let agents and people make the bounded changes with least-privilege tools and checkpoints.

  6. 6. Prove

    Run tests and scenarios, capture receipts, and expose failures instead of summarizing them away.

  7. 7. Judge and ship

    Apply policy and risk-based judgment, then release, revise, reject, or hold.

  8. 8. Learn

    Turn outcomes into better tests, context, instructions, templates, policies, and signals.

### 1. Signal A signal is evidence that something may deserve work: a user complaint, an incident, a repeated manual step, a failing service-level objective, a security requirement, or a measured product opportunity. A model-generated idea is also only a signal. It is not approved intent. Good intake preserves the source, urgency, affected users, and uncertainty. It rejects work that has no owner or no plausible result. ### 2. Intent Intent turns the signal into a bounded outcome. It names the user problem, desired result, scope, constraints, owner, and acceptance criteria. A [product requirements document](/learn/planning/what-is-a-product-requirements-document) can carry product intent for a substantial change. A smaller task may need only a few explicit criteria. Acceptance criteria should describe observable behavior. “Improve imports” is not enough. “An admin can preview a 100,000-row import without changing billing data” can be planned and proved. ### 3. Context Context is selected evidence, not a repository dump. Include the current code paths, interfaces, data rules, accepted decisions, representative examples, known conflicts, and freshness notes that affect the task. [Rich references](/learn/ai-development/what-are-rich-references) are useful when an agent needs exact prototypes, tests, code examples, or rubrics. The context packet should say which source wins when a stale plan conflicts with current code or an accepted decision. ### 4. Plan The plan converts intent and context into ordered changes, dependencies, risks, verification steps, and stop conditions. Larger work benefits from an explicit, reviewable plan because errors are cheaper to find before execution. Use an [AI coding plan](/templates/ai-coding-plan) for the next implementation pass. Use a [technical specification](/templates/technical-specification) for durable behavior and design, an [ADR](/templates/architecture-decision-record) for one consequential architecture choice, or an [RFC](/templates/software-rfc) when a proposal needs broader discussion. These documents have different jobs. ### 5. Execute Execution may involve one agent, several specialized agents, people, or a mix. The factory defines what each actor can change, which tools it can use, how work is isolated, what checkpoints exist, and when it must stop. [Long-horizon tasks](/learn/ai-development/what-are-long-horizon-tasks-for-ai-agents) need durable state, explicit handoffs, bounded retries, and recovery after interruption. More runtime is not a substitute for clearer intent or fresher context. ### 6. Prove Proof links the result to the acceptance criteria. It can include tests, screenshots, accessibility checks, benchmark receipts, migration rehearsals, deploy evidence, and unresolved failures. A generated summary is an index to evidence, not the evidence itself. Deterministic checks should fail deterministically. Judgment belongs in an anchored rubric with reasons and source links. A [coding-agent field guide](/learn/ai-development/what-is-a-coding-agent-field-guide) can preserve reviewed, project-specific lessons, but enforceable rules should graduate into tests, types, schemas, linters, or policy. ### 7. Judge and ship This stage combines hard policy with a decision appropriate to the risk. The result may be release, staged rollout, revision, rejection, or hold. The decision record should name the evidence reviewed, the unresolved risks, the decision maker, and the scope of the decision. Shipping is not always deployment. It can mean merging a library change, enabling a feature for a cohort, publishing a package, completing a migration, or deliberately deciding not to proceed. ### 8. Learn The learning loop starts with observed outcomes. A failure might create a regression test, a corrected source, a narrower permission, a new stop condition, a better example, or a revised intake rule. A successful pattern might become a reusable skill or paved path. Saving a transcript or adding more text to a knowledge base is not automatically learning. The lesson must change a future input, control, or decision, and it needs an owner who can remove it when it becomes stale. ## What documents and controls does a software factory need? The smallest useful control surface is often six Markdown files: ```text theme={null} software-factory-control-packet/ ├── 01-intent.md ├── 02-context.md ├── 03-plan.md ├── 04-review-rubric.md ├── 05-evidence.md └── 06-decision-log.md ``` The packet separates six jobs: | File | Job | | - | - | | `01-intent.md` | User problem, desired result, scope, constraints, owner, and acceptance criteria | | `02-context.md` | Source links, code paths, decisions, examples, conflicts, and freshness | | `03-plan.md` | Ordered changes, dependencies, risks, verification steps, and stop conditions | | `04-review-rubric.md` | Risk-based checks for intent, correctness, security, operability, and maintainability | | `05-evidence.md` | Test receipts, screenshots, benchmarks, deploy proof, and unresolved failures | | `06-decision-log.md` | Choices, rejected alternatives, rationale, author, date, and supersession state | Copy the complete [software factory control packet template and worked example](/templates/software-factory-control-packet). It is intentionally plain Markdown. A team can version it beside the work without adopting another platform. The six files are not mandatory categories for every task. A one-line fix with a precise regression test may need only an issue, diff, and test receipt. Use the packet when work spans multiple actors, sessions, systems, or review decisions and the cost of losing the reasoning is greater than the cost of maintaining six small files. ## Where should humans review? Human review is useful where risk or ambiguity exceeds what a deterministic gate can settle. It does not follow that every change needs a person at every stage. Decision matrix with consequence of error increasing upward and ambiguity increasing rightward: automate clear low-consequence work, stage and monitor clear high-consequence work, clarify ambiguous low-consequence intent, and use human judgment when both are high. Decision matrix with consequence of error increasing upward and ambiguity increasing rightward: automate clear low-consequence work, stage and monitor clear high-consequence work, clarify ambiguous low-consequence intent, and use human judgment when both are high. Use automated gates for questions with stable, machine-checkable answers: * Does the build, type check, test suite, contract check, or migration rehearsal pass? * Does the change stay within an allowed path, permission, budget, or dependency policy? * Does the artifact contain the required fields and evidence links? * Did the release remain within error-rate, latency, or data-integrity thresholds? Use human judgment when the answer depends on contested intent, novel tradeoffs, or material consequences: * Is this the right user problem and is the proposed scope acceptable? * Does a security, privacy, financial, legal, or irreversible data risk remain? * Is the evidence representative enough to support the shipping decision? * Should the team accept a known limitation, change policy, or stop the work? A low-risk dependency patch with passing tests and a trusted automated policy may flow through without individual review. A billing migration or authentication change may need human judgment at intent, plan, and release. The control should follow the consequence of being wrong, not a ritual review count. ## Worked example: a resumable billing import The following company, product, people, metrics, results, and identifiers are fictional. They illustrate traceability and do not report a Plannotator customer or product capability. **Quay Billing** is a fictional subscription-billing product. Its fictional operations team wants a resumable bulk price-adjustment import for billing administrators. The change touches a browser interface, an API, durable job state, tenant authorization, audit events, performance, and staged rollout. ### Intent and acceptance criteria | ID | Acceptance criterion | | - | - | | AC-1 | An admin can preview a CSV with up to 100,000 rows or 50 MB, see row-level errors, and make no billing changes. | | AC-2 | Confirming a valid preview applies each adjustment exactly once across retries and worker restarts. | | AC-3 | Only an administrator from the same tenant can start, confirm, cancel, or read an import; start, confirm, cancel, and completion events are audited. | | AC-4 | The interface reports progress, supports cancellation before commit, exports rejected rows, and passes the defined keyboard and screen-reader checks. | | AC-5 | On the fixed fictional staging dataset, preview p95 is below 90 seconds and apply p95 is below five minutes. | | AC-6 | The feature can roll out at 5%, 25%, and 100% with a kill switch; recovery after database failover is proved before 100%. | ### Plan, rubric, and stop conditions The fictional plan creates an immutable upload record, a resumable validation job, a preview API, an idempotent apply ledger, an admin interface, audit events, and staged-release controls. Each implementation step names the acceptance criteria and verification it supports. The rubric treats data integrity, tenant isolation, and recovery as blocking. Accessibility and operability have named checks. The plan stops if a retry duplicates an adjustment, cross-tenant access succeeds, cancellation can leave a partial commit, or the fixed benchmark exceeds its limit twice. ### Evidence and decision | Evidence | Result | Criteria | | - | - | - | | E-1 preview integration suite and database snapshot | Fictional pass: 100,000 rows parsed, 217 rejected, zero billing rows changed | AC-1 | | E-2 retry and restart fault-injection suite | Fictional pass: 84,913 valid adjustments, 84,913 unique ledger entries | AC-2 | | E-3 authorization matrix and audit-event assertions | Fictional pass: cross-tenant and non-admin requests denied; four required event types recorded | AC-3 | | E-4 desktop/mobile screenshots, keyboard script, and screen-reader notes | Fictional pass against the packet's defined checks | AC-4 | | E-5 fixed-dataset benchmark | Fictional pass: preview p95 71 seconds; apply p95 4 minutes 12 seconds | AC-5 | | E-6 staged rollout and failover rehearsal | Fictional partial: 5% and 25% stable; failover rehearsal not yet run | AC-6 unresolved | The fictional decision log records: proceed to 25%, keep the kill switch armed, and hold 100% rollout until E-6 contains a passing failover receipt. The packet does not turn an unresolved criterion into a green summary. It carries the open result into the shipping decision. The [full copyable example](/templates/software-factory-control-packet#completed-fictional-example-quay-billing) includes all six files. ## How should a factory learn from failures? Start by classifying where the failure entered the loop: | Failure | Likely correction | | - | - | | Wrong problem selected | Improve Signal evidence or Intent decision rights | | Agent used stale architecture | Fix Context freshness and source precedence | | Work expanded unexpectedly | Narrow Plan scope, permissions, or stop conditions | | Tests passed but behavior failed | Add a representative scenario or acceptance criterion to Prove | | Unsafe change reached users | Tighten Judge and ship policy, rollout controls, or recovery | | Same correction recurs | Graduate the lesson into a test, type, policy, template, skill, or field-guide entry | Do not reward the system for producing more artifacts. Measure whether the correction reduces repeated failures, false blocks, time to useful evidence, or recovery cost. Keep a counterexample and a removal condition for learned rules so one incident does not become permanent bureaucracy. ## How current vendor models differ Several vendors now use “software factory” for agent-native delivery, but their published emphases differ: * **Factory.ai** describes standardized intake, context, planning, execution, review, delivery, and observability. Its architecture article keeps people focused on intent, review, and policy, and recommends explicit reviewable plans for larger work. ([Architecture](https://factory.ai/articles/what-is-a-software-factory-architecture), [category guide](https://factory.ai/articles/what-is-a-software-factory)) * **8090** centers continuous context flow through a knowledge base, a unified assembly line, a factory floor plan with ownership, reusable roles and skills, and lifecycle feedback. Its article also says some parts remain experimental. ([8090](https://www.8090.ai/blog/the-software-factory-production-system)) * **StrongDM** describes people defining intent, scenarios, and constraints while agents generate and validate software. It argues that scenario validation can replace code review within its own model. That is StrongDM's position, not a general result established by this guide. ([StrongDM](https://www.strongdm.com/blog/the-strongdm-software-factory-building-software-with-ai)) These accounts show an emerging category, not a settled standard. The eight-stage model in this guide is an editorial synthesis designed to make assumptions and controls inspectable. It does not rename any vendor's architecture. ## Limits of the category and the search evidence “AI software factory” can overstate the maturity of a workflow. Repeatable inputs do not guarantee good intent. More agent autonomy does not guarantee lower cost or higher quality. Evaluation can miss real behavior, feedback can reinforce the wrong objective, and a documented control can still be ignored. The search evidence behind this page is also limited. Query-volume and competition estimates are provider-modeled, change over time, and do not establish real adoption or reader intent. Much of the current agent-native literature comes from vendors describing their own systems. This guide therefore uses vendor sources only for what those vendors say, separates historical examples from the proposed model, and makes no universal productivity claim. Evaluate a factory with local evidence: lead time to a proved result, escaped defects, repeated corrections, rollback and recovery performance, human attention required, false blocks, cost, and user outcomes. Record the baseline and the conditions of the measurement. ## Where Plannotator fits Plannotator can be the shared planning and human-judgment surface inside a larger software factory. On the product surfaces that support them, people and agents can inspect plans, PRDs, specifications, ADRs, Markdown, HTML, folders, annotations, comments, and versions. Plannotator is **not** an end-to-end software factory. It does not provide autonomous execution, model routing, CI/CD, deployment, monitoring, scenario validation, or a complete control plane. Those responsibilities remain with the agents, development tools, delivery systems, and operating controls a team chooses. See the current shared-review workflow, or start with the open-source [document review workflow](/open-source/workflows/documents). ## Frequently asked questions ### What is an AI software factory in one sentence? It is a repeatable delivery system that connects signal, intent, context, planning, agent execution, proof, shipping judgment, and learning through explicit controls and evidence. ### How is it different from a coding agent? A coding agent performs work. A software factory defines how work enters, what context and authority the agent receives, how the result is proved and judged, and what changes after success or failure. ### Is it the same as CI/CD or platform engineering? No. CI/CD and platform engineering can be important factory components. They do not by themselves establish user intent, agent context, plan quality, evidence sufficiency, or learning across the whole delivery loop. ### Does every change need human review? No. Low-risk, well-bounded changes can pass trusted automated gates. Human judgment is most useful where intent is ambiguous or the consequences involve security, privacy, money, legal obligations, irreversible data, or a large user impact. ### What is the minimum control packet? For substantial multi-stage work, use intent, context, plan, review rubric, evidence, and decision-log files. For a small, reversible change, use fewer artifacts if the issue, diff, checks, and decision remain clear. *Published and last reviewed July 27, 2026. Written and maintained by the Plannotator documentation team.* # What Is an LLM Codebase Wiki? Pros, Cons, and Whether You Need One Source: https://docs.plannotator.ai/learn/ai-development/what-is-an-llm-codebase-wiki An LLM codebase wiki uses AI to generate and maintain documentation about a software repository. Learn how codebase wikis work, where they help, where they create cost or context rot, and how they compare with spec-driven development. An **LLM codebase wiki** is AI-generated documentation that explains a software repository through architecture pages, system maps, feature summaries, diagrams, source links, and searchable answers. It gives engineers and coding agents a faster way to find where important logic lives and how parts of the repository connect. Not every repository needs one. A codebase wiki is most useful when engineers and agents repeatedly spend time rediscovering the same architecture. It is less useful when the repository is small, its maintained documentation already works, or nobody checks the generated pages for errors. A generated wiki can help people navigate a codebase. It should not silently become the authoritative record of how the software is supposed to behave. Approved specifications, contracts, decision records, code, tests, and runtime evidence answer questions that a generated summary cannot answer on its own. An AI agent turns a source-code repository tree and Git history into a navigable codebase wiki whose architecture pages cite the exact files and commits they explain. An AI agent turns a source-code repository tree and Git history into a navigable codebase wiki whose architecture pages cite the exact files and commits they explain. ## What does an LLM codebase wiki contain? Most codebase wikis are generated from source files, repository structure, configuration, and Git history. Depending on the product and repository, the output can include: * an architecture overview; * descriptions of major systems and modules; * request, data, and control-flow diagrams; * entry points and important source files; * feature and API summaries; * setup and contribution guidance; * links from explanations to the code they describe; * a question-and-answer interface for people or agents. The wiki becomes a derived view of the repository. A generator scans the code, plans a documentation structure, writes or updates pages, and makes those pages available through a website, Markdown directory, coding agent, or search tool. Some systems regenerate the entire wiki. Others compare the current revision with a previous commit and update only the affected pages. Either approach can reduce the time spent writing an initial architecture guide. Neither approach proves that the resulting explanation is complete or correct. ## Where did the LLM wiki idea come from? Andrej Karpathy's [LLM Wiki proposal](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) describes a general pattern for building personal knowledge bases with language models. It is broader than software documentation. Karpathy separates the system into three layers: 1. **Raw sources** remain immutable and authoritative. 2. **The wiki** contains LLM-generated summaries, concept pages, comparisons, and links. 3. **A schema file** such as `AGENTS.md` tells the agent how to ingest sources, answer questions, and maintain the wiki. In that model, the LLM owns the synthesis layer. The person curates sources, reviews important updates, and decides which questions deserve further investigation. The wiki preserves useful synthesis so the model does not have to reconstruct the same connections during every conversation. Codebase-wiki products apply a similar idea to repositories. The source material is code and Git history. The compiled layer is a set of architecture pages, diagrams, and searchable explanations. LangChain's introduction to [OpenWiki](https://www.langchain.com/blog/introducing-openwiki-an-open-source-agent-for-repo-documentation) explicitly cites Karpathy's pattern, Cognition's DeepWiki, and Factory's AutoWiki as related work. ## How current codebase wikis work The products share a category but make different choices about generation, storage, and agent access. | Product or pattern | What it generates | How it stays current | How agents use it | Operational limit | | - | - | - | - | - | | [Cognition DeepWiki](https://docs.devin.ai/work-with-devin/deepwiki) | Architecture diagrams, summaries, source links, and repository pages | Regenerated repository snapshots | Ask Devin, Devin sessions, and MCP | Large repositories may need a human-authored `.devin/wiki.json` to prevent important areas from being omitted | | [Factory AutoWiki](https://factory.ai/news/wiki) | Structured pages, architecture explanations, visuals, and narrated walkthroughs | On demand or through CI on every push | Factory Droids read the same wiki presented to engineers | Generation and review still consume compute and team attention | | [LangChain OpenWiki](https://www.langchain.com/blog/introducing-openwiki-an-open-source-agent-for-repo-documentation) | A Markdown codebase wiki | Scheduled updates based on Git diffs | `AGENTS.md` or `CLAUDE.md` points the agent to the wiki | Hundreds of pages still require routing and retrieval rather than automatic loading | | Karpathy's LLM Wiki pattern | An interlinked synthesis over immutable sources | Ingest, query, and periodic lint operations | A schema file defines the agent's maintenance rules | The original pattern is for general knowledge work, not specifically source code | Kapa belongs to an adjacent category. Its [knowledge platform](https://docs.kapa.ai/) indexes documentation, source code, support tickets, community discussions, and other product knowledge for customers, employees, and agents. It shows the broader demand for maintained organizational context, but its primary job is not to generate a wiki from one repository. ## What are the advantages of an AI-generated codebase wiki? ### Faster orientation in unfamiliar code A source-linked architecture page can show a new engineer where requests enter the system, which service owns a particular workflow, and where data is stored. This is especially useful in old repositories, large monorepos, and systems divided across several repositories. The same map can help a coding agent decide which files to inspect before proposing a change. Without a map, each new session may spend time rebuilding an incomplete model of the repository from filenames, searches, and scattered documentation. ### Reusable explanations Repository exploration produces useful conclusions: which components own a feature, how an authorization check flows through the system, or why one package depends on another. A maintained wiki can preserve those conclusions instead of leaving them in chat transcripts that the next engineer or agent will never see. ### A shared starting point for people and agents Factory and Cognition both present wiki content to engineers and their coding agents. That can reduce a common coordination failure where a person reads one set of documentation while the agent relies on different instructions or guesses from the source tree. The benefit depends on traceability. An explanation that links to exact source files and a named repository revision can be inspected. An uncited paragraph is harder to distinguish from a plausible but incorrect summary. ### Documentation versions tied to code Factory treats AutoWiki as a build artifact and records the commit, branch, and timestamp for each run. This is a useful model for generated documentation. A derived artifact can be rebuilt, compared, or discarded without pretending that every generated sentence was approved by the team. ## What can go wrong with an LLM codebase wiki? ### Regeneration does not guarantee accuracy A scheduled job can finish successfully and still preserve a wrong interpretation. The generator may mistake a compatibility shim for the preferred architecture, describe a test fixture as production behavior, or infer a product rule from an implementation detail. Fresh prose can be wrong in a new way. Teams need to distinguish *recently generated* from *reviewed and supported by evidence*. ### Automatic coverage still needs human direction DeepWiki supports a `.devin/wiki.json` file containing repository notes and an explicit page structure. Its documentation recommends this for large repositories when automatic planning misses important folders or components. The steering file is useful, but it also reveals where the maintenance work moved. A person still has to identify what matters, recognize gaps, specify the intended coverage, and review the next generation. ### Maintenance cost changes form LLMs reduce the manual work of drafting summaries and updating cross-references. The remaining cost includes: * generation and model usage; * CI jobs and storage; * review of changed documentation; * adjustments to page structure and steering rules; * investigation of missing or contradictory claims; * access control for sensitive architecture; * recovery when generated updates create noisy diffs. Cognition's [2026 release notes](https://docs.devin.ai/release-notes/2026) expose expected ACU ranges and a cost breakdown for DeepWiki generation. Documentation generation has a measurable compute budget in addition to review time. ### Generated prose can acquire false authority Well-formatted pages and clean diagrams can look settled even when they represent one model's interpretation. A wiki can flatten uncertainty, omit rejected alternatives, or make two conflicting implementations appear to follow one coherent design. Readers need to know whether a page is generated, which revision it describes, what sources support it, and whether a responsible person has reviewed it. ### Security boundaries become easier to cross A codebase wiki can collect sensitive architecture, service relationships, authentication flows, internal hostnames, and operational details into one searchable surface. Information that was previously difficult to assemble may become easy to browse or share. Repository permissions, wiki permissions, generated exports, and agent access must follow the same security boundaries as the underlying code. ## Can a codebase wiki cause context rot? Yes. A codebase wiki reduces repeated exploration only when it routes the agent to a small, current set of relevant pages. Copying a large wiki into the prompt, or repeatedly loading broad sections of it, can make the model less reliable even when the input remains within its advertised context window. Chroma's [Context Rot](https://www.trychroma.com/research/context-rot) evaluation tested 18 models and found increasingly unreliable, nonuniform performance as input length grew, including on controlled tasks. The earlier [Lost in the Middle](https://arxiv.org/abs/2307.03172) study found that models often used relevant information less reliably when it appeared in the middle of a long input. Matt Pocock uses the practical term [attention degradation](https://www.aihero.dev/ai-coding-dictionary/attention-degradation) for the same failure during long agent sessions. The dedicated [context rot guide](/learn/ai-development/what-is-context-rot) covers the research and mitigation steps. A verified source signal becomes diluted inside a crowded context window, while a focused route selects three relevant wiki pages and preserves a complete architecture map. A verified source signal becomes diluted inside a crowded context window, while a focused route selects three relevant wiki pages and preserves a complete architecture map. Context-window capacity is not the same as useful attention. A wiki can make retrieval worse before the model reads a page: * similar page titles can produce ambiguous search results; * broad summaries can retrieve several systems when the task concerns one; * old and current behavior can appear together without clear version labels; * generated cross-links can lead the agent through a growing chain of secondary summaries; * an instruction such as “read the wiki” provides no boundary for when the agent should stop. OpenWiki uses a narrower pattern. It adds a short reference to `AGENTS.md` or `CLAUDE.md`, then lets the coding agent open relevant wiki pages when it needs repository context. This avoids loading hundreds of pages into every run. It does not prove that the agent selected the right pages, that those pages are current, or that a concise source file would not have been cheaper to inspect directly. A useful wiki needs a concise index, scoped page summaries, links to primary sources, a named repository revision, and routing instructions that explain which pages apply to which work. The agent should load the smallest useful set and return to code, tests, specifications, or decision records when a wiki claim affects the change. ## What does context curation cost? Generated documentation moves maintenance work into generation, routing, and review. OpenWiki's example [GitHub Actions workflow](https://github.com/langchain-ai/openwiki/blob/main/examples/openwiki-update.yml) runs once a day and opens a pull request with documentation changes. Each refresh still has several costs: | Cost | Where it appears | | - | - | | Model inference | Initial generation, repository analysis, diff interpretation, and rewritten pages | | CI and storage | Scheduled jobs, traces, generated files, branches, and pull requests | | Human review | Checking changed explanations, missing coverage, source links, and false claims | | Retrieval design | Maintaining the index, page boundaries, summaries, and agent-routing instructions | | Failure recovery | Correcting stale pages or investigating a change made from the wrong context | A recurring loop turns repository changes into reviewed wiki updates through model inference, scheduled CI, pull requests, and review, balanced against the exploration time it saves. A recurring loop turns repository changes into reviewed wiki updates through model inference, scheduled CI, pull requests, and review, balanced against the exploration time it saves. If updates only add pages and cross-links, retrieval becomes noisier. If updates run too rarely, the wiki becomes stale. If they run on every small change, model and review costs may exceed the navigation time saved. OpenWiki documents the automation pattern, but it does not establish that continuous generation is cost-effective across repositories. ## Compiling knowledge can discard the facts you need An LLM codebase wiki compresses source material into an easier form. Compression creates a second risk before retrieval begins: the generated page may omit a rare constraint or exception. The 2026 [WiCER study](https://arxiv.org/abs/2605.07068) calls this the *compilation gap*. In its benchmark, blind compilation produced a 53 to 60 percent catastrophic-failure rate. An iterative process that tested the compiled wiki with diagnostic questions recovered much of the lost quality. Other research reports promising results. [Retrieval as Reasoning](https://arxiv.org/abs/2605.25480) found that a self-evolving LLM Wiki outperformed several retrieval and graph baselines on the authors' multi-hop and structured multi-document tests. A separate [progressive-disclosure study](https://arxiv.org/abs/2607.04576) found that page summaries and targeted retrieval reduced answer-generation cost in its corpus, although narrower evidence introduced a small correctness and completeness trade-off. That study also reports a failed judge-reliability threshold and limits its conclusions to one corpus and answering model. The research supports testing and targeted access, not blind faith in generated summaries. A team should probe what the wiki failed to preserve, not only whether the pages read well. ## A codebase wiki is not a specification Wikis, specifications, decision records, and implementation plans preserve different information. | Artifact | Question it should answer | | - | - | | Generated codebase wiki | Where does this logic live, and how do the visible parts connect? | | Current specification or contract | What should the system do, including constraints and acceptance criteria? | | Architecture decision record or accepted RFC | What did the team decide, why, and what consequences did it accept? | | Change plan | How will this particular change be implemented and verified? | | Code, tests, and runtime evidence | What has actually been implemented, and what behavior can be demonstrated? | Source analysis can reveal that an API uses a particular database or that a request passes through three services. It usually cannot recover a rejected alternative, a legal constraint discussed in a meeting, or the reason the team accepted a slower but safer design. [Architectural decision records](https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html) preserve the context, decision, and consequences of consequential choices. Accepted records remain immutable and can be superseded by later decisions. A generated wiki can link to those records. It should not rewrite their history to fit the latest code. ## A wiki does not replace specifications A codebase wiki describes implementation after enough code exists to analyze. Specifications record intended behavior before implementation. [GitHub Spec Kit](https://github.github.com/spec-kit/) and [OpenSpec](https://github.com/Fission-AI/OpenSpec) both make requirements and plans reviewable before an agent writes code. Two teammates approve a versioned specification, plan, and task set before three coding agents implement the work; the resulting repository then produces a downstream codebase wiki. Two teammates approve a versioned specification, plan, and task set before three coding agents implement the work; the resulting repository then produces a downstream codebase wiki. Matt Pocock's [engineering skills](https://github.com/mattpocock/skills/blob/main/skills/engineering/README.md) also separate domain context and architecture decisions from implementation tasks. In [one issue](https://github.com/mattpocock/skills/issues/130), users reported that `CONTEXT.md` had grown beyond 500 lines and mixed domain truth with implementation details. The suggested correction was to keep it concise and remove implementation detail. Spec-driven development has its own failure modes. Teams can accumulate abandoned specifications, confuse historical plans with current requirements, or add templates that nobody reviews. A file named `spec.md` is not authoritative merely because it exists. The team must define ownership, approval, verification, and whether completed feature records remain historical or update a living specification. [How to keep codebase documentation current when AI agents write code](/learn/code-context/living-documentation-for-ai-agents) explains how accepted intent, implementation discoveries, and verified behavior can flow into maintained documentation without rewriting the original decision history. ## A practical structure for codebase knowledge One document does not need to answer every repository question. A team can give each record a bounded role: | Repository question | Preferred source | | - | - | | What should the product do? | Approved current specification or contract | | Why did we choose this design? | Accepted ADR or RFC with supersession status | | What has been implemented? | Code, tests, runtime evidence, and generated contracts | | Where does this logic live? | Source-linked codebase wiki or code search | | What should an agent read first? | Concise `AGENTS.md` or `CLAUDE.md` routing instructions | The instruction file should identify the current sources and explain when to use them. It should not contain the entire knowledge base. The generated wiki should include source links, a repository revision, and a visible generated or reviewed status. It can summarize approved specifications and decision records as long as it links back to them and preserves their authority. When the implementation contradicts an approved specification, the wiki should expose the disagreement instead of choosing a winner. Plans and decision records can accumulate into a useful history, but they should not become an unlabeled pile. Current specifications explain intended behavior. Immutable decision records explain how the team reached it. Completed plans show how particular changes were executed. The wiki helps people find the relevant record. ## Do you need an LLM codebase wiki? Consider adding one when: * the codebase is large, old, unfamiliar, or split across repositories; * onboarding and cross-team navigation are recurring costs; * agents repeatedly rediscover the same architecture and entry points; * generated explanations link to source and a named repository revision; * the team can review consequential pages and correct missing coverage; * regeneration costs less than the repeated exploration it replaces. You probably do not need one when: * the repository is easy to navigate directly; * current product, technical, API, and operational documentation already works; * types, tests, contracts, and a concise instruction file answer most questions; * nobody reads or reviews the generated pages; * generated updates create more churn than useful knowledge; * the actual problem is ambiguous or unapproved intent. Start with concise agent instructions, current specifications and contracts, and a decision log. Add a generated wiki when repeated navigation cost becomes visible. Treat it as a derived repository map until the team deliberately reviews and promotes a claim into an authoritative document. ## Frequently asked questions ### What is the difference between an LLM wiki and an LLM codebase wiki? An LLM wiki is a general pattern in which a language model compiles sources into a maintained, interlinked knowledge base. An LLM codebase wiki applies that pattern to a software repository and usually emphasizes architecture, modules, source links, and coding-agent access. ### Is DeepWiki the same as an LLM wiki? DeepWiki is Cognition's codebase-wiki product. It automatically indexes repositories and generates architecture diagrams, documentation, source links, and searchable answers. Karpathy's LLM Wiki is a broader knowledge-management pattern rather than one codebase product. ### Do AI coding agents need a codebase wiki? No. Agents need relevant, current context. In a small or well-documented repository, code search, tests, contracts, and concise instructions may provide enough context. A wiki becomes useful when it reduces recurring exploration in a larger or less familiar system. ### Can a codebase wiki replace technical documentation? It can replace some manually written repository overviews. It should not replace approved specifications, API contracts, runbooks, security policies, or decision records unless the team has reviewed the generated content and intentionally assigned it that role. ### What is the difference between a codebase wiki and spec-driven development? A codebase wiki usually describes an existing implementation. Spec-driven development records intended behavior, constraints, plans, and acceptance criteria before implementation. Teams can use both: specifications guide the change, while the wiki helps engineers and agents locate the affected code. ### How do you keep an AI-generated codebase wiki current? Regenerate it from a named repository revision, use Git diffs to identify affected pages, preserve source links, and review consequential changes. Automated refresh reduces manual drafting but does not verify that the interpretation is correct. ### Can an LLM codebase wiki cause context rot? Yes. Loading too many pages or low-signal summaries can make relevant information harder for the model to use. Keep agent instructions short, route to a small set of relevant pages, and preserve direct links to source, specifications, and decision records. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # What Is Context Rot? Why AI Agents Get Worse Over Time Source: https://docs.plannotator.ai/learn/ai-development/what-is-context-rot Context rot is the decline in an AI agent's reliability as its working context grows. Learn why it happens, why larger context windows do not fully solve it, and how to reduce it. **Context rot** is the gradual decline in an AI model's reliability as the information in its working context grows. The model may still be inside its advertised context-window limit, yet become worse at finding the right fact, following an earlier instruction, or connecting information spread across the session. For an AI agent, context includes more than your latest message. It can include the system prompt, chat history, files, tool instructions, tool results, retrieved documents, plans, errors, and the agent's own previous work. All of that competes to influence the next answer or action. Context rot does not mean the model has literally decayed. It means the working set has become harder to use well. An AI model's context window fills over time with chat, code, plans, tool results, screenshots, errors, and old decisions until the original task is buried and the output becomes incomplete. An AI model's context window fills over time with chat, code, plans, tool results, screenshots, errors, and old decisions until the original task is buried and the output becomes incomplete. ## Think of context as a desk, not a filing cabinet A large filing cabinet can hold more documents. A large desk can also hold more documents, but covering every inch of it does not necessarily help you make one decision. The model needs the right material on its desk for the current step. A concise specification, the relevant source files, and one failed test may be more useful than the entire repository, a long transcript, every tool result, and several outdated plans. This is the practical distinction: * **Context capacity** is how much the model can accept. * **Effective context** is how much of that material the model can use reliably for the task. The first number appears on a model card. The second depends on the model, the task, the position and similarity of relevant information, the amount of distracting material, and how the agent manages its working state. ## Context windows grew from thousands to millions of tokens GPT-3 was trained with a [2,048-token context window](https://arxiv.org/pdf/2005.14165). Anthropic expanded Claude from 9,000 to [100,000 tokens in 2023](https://www.anthropic.com/news/100k-context-windows). Google introduced a [one-million-token Gemini 1.5 Pro window in 2024](https://blog.google/innovation-and-ai/products/google-gemini-next-generation-model-february-2024/). By 2026, [Claude Fable 5 supported 1M tokens](https://platform.claude.com/docs/en/about-claude/models/overview). The [GPT-5.6 family supported 1.05M](https://developers.openai.com/api/docs/models).

Context-window capacity

From 2,048 tokens to today's million-token frontier

2020 · GPT-3

2,048

tokens

2023 · Claude

100K

tokens

2024 · Gemini 1.5 Pro

1M

tokens

2026 · Fable 5 and GPT-5.6

1M+

tokens

Advertised capacity grew more than 500 times between GPT-3 and GPT-5.6. Useful attention did not become uniform by the same factor.

Larger windows are genuinely useful. They let models inspect longer documents, more code, extended video, and richer histories in one request. They also delay the hard limit where old material must be removed or summarized. They do not guarantee that every included detail will influence the result equally well. ## Context rot can start before the window is full A context window has a hard boundary: the maximum input the model accepts. Context rot is usually a performance gradient before that boundary. Three problems can overlap: ### Relevant information becomes harder to select The model may need to find one constraint among many similar notes, connect facts that use different words, or distinguish the current decision from an older one. This is harder than retrieving an exact phrase from an otherwise unrelated document. ### Distracting context is not neutral Old plans, repeated instructions, failed approaches, broad tool output, and almost-correct examples can compete with the current task. A related but wrong statement may be more distracting than completely unrelated text. ### Long sessions accumulate contradictions An agent produces new state on every turn. It reads files, runs commands, receives errors, writes plans, revises plans, and explains its actions. If obsolete conclusions remain beside current ones, the model must infer which version still applies. That is why adding more explanation can make a struggling session briefly better, then worse. The repeated instruction receives fresh emphasis, but the session also grows. ## What does the research show? There is no single benchmark that captures every real agent workflow. Several lines of research point to the same practical warning. * Chroma's [Context Rot evaluation](https://www.trychroma.com/research/context-rot) tested 18 models. Performance became increasingly unreliable as input length grew, even when the researchers held the task itself constant. The effect varied by model, input structure, semantic similarity, and distractors. * [Lost in the Middle](https://arxiv.org/abs/2307.03172) found that models often used relevant information more reliably when it appeared near the beginning or end of a long input than when it appeared in the middle. * [RULER](https://arxiv.org/abs/2404.06654) moved beyond simple retrieval to multi-hop tracing and aggregation. Nearly all evaluated models declined as context grew, and only half maintained satisfactory performance at 32,000 tokens despite advertising windows of at least that size. * [NoLiMa](https://arxiv.org/abs/2502.05167) removed obvious word overlap between a question and the relevant passage. Eleven of thirteen evaluated models fell below half of their strong short-context baselines at 32,000 tokens. These tests do not say long context is useless. They show that fitting information into the window and using it reliably are different achievements. They also should not be read as a 2026 model leaderboard. The studies establish recurring long-context failure patterns, but most predate Claude Fable 5 and GPT-5.6. Current frontier models are more capable, and teams should measure them on their own tasks rather than assume an older benchmark score still describes today's model. ## What does softmax have to do with it? Most modern language models use an attention mechanism to decide how strongly parts of the input should influence one another. Softmax helps turn many possible relationships into a weighted distribution. The paper [Softmax Is Not Enough](https://arxiv.org/abs/2410.01104) proves a narrower result: learned softmax circuits can lose sharpness when they must choose across more items than they saw during training, even on a simple maximum-selection task. The authors describe this as a problem of sharp size generalization. In plain language, a selection that was decisive across a short list can become less decisive as the list grows. That is one useful explanation for why more possible inputs can make selection harder. It is not proof that softmax alone causes every long-session failure. Training distribution, position handling, retrieval quality, task complexity, contradictory information, and the agent harness also matter. ## Why do AI agents seem to get worse over time? Long-running agents create context while they work. A coding agent may begin with a clear task and a few files, then accumulate search results, source files, test logs, screenshots, failed patches, review feedback, and its own explanations. Matt Pocock calls the practical symptom [attention degradation](https://www.aihero.dev/ai-coding-dictionary/attention-degradation). The model has not changed, but constraints that worked earlier begin to slip. The agent may ask a question that was already answered, ignore a file it read, repeat a failed approach, or introduce code that conflicts with an earlier decision. Mike Ramos uses two pop-culture metaphors in [50 First Dates with Mr. Meeseeks](https://backnotprop.com/blog/50-first-dates-with-mr-meeseeks/): * The model is like a person who must watch a briefing tape to reconstruct what happened before. The current context is that tape. * A chat is like a short-lived worker created for one task. Keeping the same worker around indefinitely can produce increasingly strange behavior. The metaphors are intentionally simple, but the operating advice is sound: do not mistake a long transcript for durable memory, and do not keep one session alive merely because it contains history. Agent products may add memory, compaction, files, search, or summaries. Those features can improve continuity. The underlying model still acts on the material loaded for the current inference. Stored knowledge helps only when the right part returns at the right time. ## Will better models solve context rot? They can reduce it. Claude Fable 5 and GPT-5.6 are designed for ambitious long-running work and ship with roughly million-token windows. Newer models often handle longer inputs, more distractors, and more complex retrieval better than earlier models. That progress does not turn a long transcript into reliable memory. The same million-token request can contain current instructions, obsolete plans, repeated tool output, and several plausible but conflicting answers. More capacity gives the model room to receive them all; it does not decide which ones the team still trusts. Current agent products are also managing context instead of relying on one ever-growing prompt. Anthropic's [context-window documentation](https://platform.claude.com/docs/en/build-with-claude/context-windows) recommends compaction for conversations approaching the limit, while its broader [context-engineering guidance](https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents) recommends structured notes, just-in-time retrieval, and focused subagents. Anthropic says [Claude Fable 5](https://www.anthropic.com/claude/fable) can work for days and delegate to subagents. OpenAI's [GPT-5.6](https://openai.com/index/gpt-5-6/) `ultra` setting coordinates four agents by default for demanding tasks. Long-running systems still need to divide work, preserve durable state, and keep irrelevant intermediate material out of the coordinating agent's working context. ## How to reduce context rot in an AI agent The practical goal is to replace an undifferentiated pile of session history with a small, current set of sources and a verifiable handoff. An AI agent's crowded working context is reduced to a focused set of relevant sources, current instructions, and a verified output. An AI agent's crowded working context is reduced to a focused set of relevant sources, current instructions, and a verified output. ### Give one session one coherent job Do not use a single chat as the permanent home for unrelated planning, implementation, debugging, review, and launch work. Start a fresh session when the objective changes materially. ### Keep the current truth outside the transcript Record the accepted plan, active constraints, current status, failed approaches, and definition of done in maintained files or artifacts. A new agent should not have to reconstruct them from hundreds of conversational turns. ### Retrieve context just in time Give the agent a concise map of available sources, then let it open the relevant files, specifications, or decisions. Avoid loading an entire wiki or repository when the task concerns one subsystem. ### Remove obsolete tool output Raw logs and tool results are useful while diagnosing a problem. After the conclusion is recorded, the full output may become noise. Keep the finding and a pointer to the evidence. ### Compact with a verification step A summary can omit the fact that matters later. After compaction, check that the objective, constraints, decisions, unresolved risks, modified files, test results, and next action survived. ### Use focused subagents for bounded investigations A subagent can explore one question in a clean context and return a short result to the main task. This keeps detailed search trails out of the coordinating agent's working set. ### Test the workflow, not only the model Measure wrong-file edits, repeated questions, ignored constraints, recovery after compaction, and the accuracy of handoffs. The effective context window belongs to the entire agent system, not only the model API. For a concrete test built around required actions, prohibited actions, and final state, see [Why AI Agents Ignore Instructions and How to Test Them](/learn/ai-development/how-to-test-ai-agent-instructions). ## When should you start a fresh agent session? Reset or hand off when the agent: * repeatedly ignores a constraint it followed earlier; * asks for information already present; * confuses current and superseded plans; * repeats an approach that already failed; * keeps adding patches without restoring a coherent design; * cannot state the current objective, system state, and next verification step clearly. Do not paste the entire old transcript into the new session. Give the new agent a concise handoff with the objective, current state, decisions, evidence, open questions, and next action. Link to primary files so it can retrieve detail as needed. For longer work, see [What Are Long-Horizon Tasks for AI Agents?](/learn/ai-development/what-are-long-horizon-tasks-for-ai-agents) and [AI Coding Agent Handoffs](/learn/code-context/ai-coding-agent-handoff). ## Frequently asked questions ### Is context rot the same as reaching the context-window limit? No. The limit is the maximum amount of input a model accepts. Context rot is declining reliability as the working context grows, and it can appear well before the limit. ### Is context rot the same as hallucination? No. A hallucination is an unsupported or false output. Context rot can contribute to hallucinations, but it also appears as missed instructions, weak retrieval, repeated work, or inconsistent reasoning. ### Does a one-million-token context window prevent context rot? No. It increases capacity. It does not guarantee uniform use of every token or equal performance across all long-context tasks. ### Is attention degradation another name for context rot? They overlap. Context rot names the broader observed decline as input grows. Attention degradation is a useful practitioner term for the way important signals lose influence inside an increasingly crowded session. ### Should I always start a new chat for every task? Not necessarily. A coherent task benefits from continuity. Start fresh when the objective changes, the session becomes noisy, or the agent can no longer state and follow the current constraints reliably. ### Can retrieval or a codebase wiki solve context rot? They can reduce unnecessary context when they route the agent to a small, current set of sources. They can make the problem worse when they return broad, stale, overlapping, or contradictory material. See [What Is an LLM Codebase Wiki?](/learn/ai-development/what-is-an-llm-codebase-wiki). Learn how teams preserve state, verification, checkpoints, and human review across dependent agent work. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # How to Annotate a Website or HTML File Source: https://docs.plannotator.ai/learn/annotate-any-web-page-or-html-file Use Plannotator to annotate a URL, local HTML file, or supported folder and return structured feedback to a coding agent. Use App Notes for live pages. Use Plannotator when a coding agent needs structured feedback on a URL, local HTML file, or folder of documents. Plannotator imports the source into its review UI, where you can highlight text, add comments, and send the annotations to the active agent session. Use the free, local-first [App Notes browser extension](https://chromewebstore.google.com/detail/app-notes/lkknpieefdjpoancolcioblkpgnhpffl) when you need to click and annotate elements directly on an arbitrary live web page. Plannotator does not place an annotation overlay on the live DOM. This workflow was added in [Plannotator pull request #545](https://github.com/backnotprop/plannotator/pull/545). The [original short demo](https://d17ygohy796f9l.cloudfront.net/videos/annotate-url.mp4) shows a URL moving into the annotation editor. ## Choose the right website annotation workflow * **Plannotator:** Import a documentation URL, render a local HTML file, or browse a supported folder, then return annotations to a coding agent. * **App Notes:** Attach notes to elements on an arbitrary live website, then copy or export the notes from your browser. App Notes is a separate browser workflow. It does not send notes through a Plannotator annotation session. ## Annotate a URL, HTML file, or folder with Plannotator Run the CLI directly: ```bash theme={null} plannotator annotate https://docs.stripe.com/api plannotator annotate docs/guide.html plannotator annotate ./docs/ ``` In Claude Code and other agents that install the slash command, run: ```text theme={null} /plannotator-annotate guide.html ``` Codex can run `!plannotator annotate guide.html` or invoke `$plannotator-annotate`. The [agent guides](/open-source/agents) show the exact command for each supported agent. Plannotator handles each source differently: | Source | Default behavior | | - | - | | URL ending in `.md` or `.mdx` | Fetch the Markdown source directly | | Other HTTP or HTTPS URL | Fetch through Jina Reader and convert to Markdown | | Local `.html` or `.htm` | Render the HTML in a sandboxed iframe | | Folder | Open a file browser for `.md`, `.mdx`, `.txt`, `.html`, and `.htm` files | Plannotator imports a URL into its annotation UI. The converted page may not preserve every layout, control, or interaction from the live site. Use `--markdown` to convert a local HTML file to Markdown instead of rendering it: ```bash theme={null} plannotator annotate docs/guide.html --markdown ``` `--render-html` remains accepted for compatibility, but local HTML already renders as HTML by default. ## Annotate a live website with App Notes Install [App Notes from the Chrome Web Store](https://chromewebstore.google.com/detail/app-notes/lkknpieefdjpoancolcioblkpgnhpffl) when you need to comment on the live page rather than an imported copy. Turn on annotation mode, click a page element, and add a note. Notes remain available as you move between pages on the site, and you can copy or export them when the review is finished. App Notes keeps its notes in browser extension storage and has no Plannotator account, analytics, advertising, or cloud storage. Its [source and release packages are available on GitHub](https://github.com/plannotator/app-notes); the [latest release](https://github.com/plannotator/app-notes/releases/latest) includes separate Chrome and Firefox packages with checksums. ## Fetch a page without Jina Reader Plannotator uses [Jina Reader](https://jina.ai/reader/) by default for ordinary web pages. Jina handles many JavaScript-rendered pages and returns Markdown with navigation and boilerplate removed. Use direct fetch and local conversion for one run: ```bash theme={null} plannotator annotate https://example.com/guide --no-jina ``` You can also disable Jina Reader in the environment or local config: ```bash theme={null} export PLANNOTATOR_JINA=0 ``` ```json theme={null} { "jina": false } ``` Set `JINA_API_KEY` if you want Plannotator to authenticate its Jina Reader requests. The request and page content leave your computer when Jina Reader is used. ## Open the source safely Raw local HTML runs inside a sandboxed iframe with an opaque origin. Scripts are allowed so interactive artifacts can work. The page can still request external images, fonts, scripts, or APIs, so open untrusted HTML only when you accept that network boundary. Converted Markdown does not reproduce every layout or interaction. Use raw HTML when the presentation or behavior is part of the review. Use `--markdown` when the text and document structure matter more than the rendered page. When you select **Send Feedback**, Plannotator returns the selected text, comments, deletions, and global feedback to the active agent session. It does not edit the remote page or the local HTML file. Review iframe security, local support assets, pinpoint comments, and HTML version history. Browse supported files in one session and return the combined feedback to your agent. See the annotation types and inspect the Markdown returned to an agent. Pick the format that best supports the review question and source of truth. *Originally published April 12, 2026, by backnotprop. Last reviewed July 19, 2026. Maintained by the Plannotator project.* # When Should AI Coding Agents Produce HTML Instead of Markdown? Source: https://docs.plannotator.ai/learn/code-context/ai-agent-html-vs-markdown Learn when AI coding agents should use HTML artifacts instead of Markdown, with practical tradeoffs for review, security, accessibility, and Git. AI coding agents should produce **Markdown by default for linear, editable documents** and **self-contained HTML when layout, comparison, interaction, or visualization materially improves understanding**. HTML earns its extra cost only when it helps someone answer a question that would be slower or less clear in prose. A polished page can still be difficult to edit, noisy to diff, inaccessible, unsafe to render, or more persuasive than accurate. Choose the format that gives reviewers the clearest evidence for the decision they need to make. A linear Markdown manuscript and an unfolding HTML artifact show when an AI coding agent should choose editable prose or a spatial interactive review surface. A linear Markdown manuscript and an unfolding HTML artifact show when an AI coding agent should choose editable prose or a spatial interactive review surface. ## The short decision framework Start with Markdown. Use HTML when at least one of the following capabilities is central to the work rather than decorative. | What the team needs to do | Better default | Why | | - | - | - | | Read and edit an implementation plan in sequence | Markdown | The source is concise, portable, and easy to review as text | | Compare several approaches against the same criteria | HTML | A stable grid or synchronized views make differences visible at once | | Try a UI state, animation, or configuration | HTML | Controls and immediate feedback expose behavior that prose can only describe | | Explain a system with a spatial map tied to code | HTML | Diagrams, callouts, and linked details can preserve relationships | | Record an approved decision or durable operating rule | Markdown | The decision should remain readable without a browser or generated interface | | Walk through a large change with annotated code and evidence | HTML | A purpose-built layout can connect diff regions, screenshots, and test output | | Work in an unknown viewer or repository-only workflow | Markdown | Plain text has the fewest rendering and security assumptions | Ask whether the document would still accomplish its main job if its CSS and JavaScript were removed. If yes, Markdown is probably enough. If the job depends on comparing, exploring, manipulating, or seeing relationships, HTML may be justified. ## Why agents are making HTML useful now An agent can assemble a one-off interface from repository files, Git history, tests, and screenshots without requiring a team to build an internal application. In [“The unreasonable effectiveness of HTML,”](https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html) Claude Code engineer Thariq Shihipar describes using HTML for plans, code review, prototypes, explainers, and one-off editing interfaces. His examples use SVG, rendered diffs, controls, and structured layouts to make dense material inspectable. Visual Studio Code’s preview [Artifacts panel](https://code.visualstudio.com/docs/chat/chat-artifacts) collects plans, screenshots, documents, and agent-selected files beside a conversation; a rule can surface `*.html` files as web pages. This keeps the output findable after the message that created it scrolls away. Use HTML as an inspection interface. Its polish does not prove that the agent understood the problem. ## Five engineering examples ### 1. An implementation plan Keep an implementation plan in Markdown when reviewers need to edit the problem, non-goals, changes, rollout, and validation in sequence. A text diff should show exactly what changed before approval. Add HTML when the problem is spatial: a migration across five services, several rollout paths, or a state machine that is hard to follow linearly. A reviewer could select a service in a system map to reveal its API changes, failure modes, and rollback steps. Keep the Markdown in Git or the project's normal system when the decision needs a durable record, and use HTML to interrogate it. For the local review loop, see [how to review, revise, and approve an AI coding plan](/learn/code-context/approve-ai-coding-plan-before-execution). ### 2. A comparison of alternatives Markdown works for two short alternatives. HTML helps when a team must compare several designs against the same constraints. An agent could render four tenancy models in aligned columns with common rows for isolation, migration work, operator burden, cost, and recovery. Selecting a constraint could emphasize where they differ. End with an export such as **Copy decision as Markdown**. The accepted choice should not be trapped inside browser state. ### 3. A UI prototype Request HTML for a visual change when the team needs to try responsive layouts, loading states, keyboard flow, or animation timings before merging product code. Treat it as a prototype, not implementation evidence. It does not prove the real application uses the correct component, data flow, accessibility behavior, or performance characteristics. Record the selected behavior, then verify the implementation. For a staged workflow that keeps one brief fixed, see [how to move from an HTML wireframe through a visual mockup to an interactive prototype](/learn/code-context/html-wireframes-and-prototypes-for-coding-agents). ### 4. An architecture explainer Keep the stable explanation of responsibilities and boundaries in Markdown. HTML can add an explorable graph: select a request path, reveal each owning service, open its source, and compare normal and failure flows. Keep a linear reading order, source links, and a text description of the boundaries. Identify the repository revision so a future reader can recognize staleness. ### 5. Code-review evidence An agent reviewing a large pull request could render relevant diff sections with margin annotations, test results, and screenshots. HTML helps because the review question crosses several formats. The walkthrough remains evidence beside the diff. It does not replace the pull request, tests, or reviewer judgment. It should name the exact commit it describes and make its underlying sources visible. Our guide to [code review artifacts](/learn/code-review/what-are-code-review-artifacts) explains how screenshots, recordings, HTML, reports, and other evidence fit beside code. The open-source Plannotator app can collect supported HTML attached to a hosted pull request or merge request, render it in a restricted viewer, and keep selected-text feedback with the ordinary review draft. See the [Artifact Gallery workflow](/learn/code-review/review-pull-request-artifacts). ## What Markdown still does better Markdown's constraints make documents easier to review, edit, and preserve. * **Source readability:** reviewers can read it in a terminal, editor, or pull-request diff without running it. * **Focused changes:** a sentence-level edit usually produces a small text diff. Generated HTML often mixes content changes with markup, styles, and layout churn. * **Direct editing:** people can correct a sentence without reconstructing an interface. * **Portability:** Markdown travels across repositories, docs generators, issue trackers, and agent context windows. * **Lower execution risk:** plain Markdown does not need JavaScript, network access, or a privileged browser origin to communicate prose. * **Durable context:** plans, rules, and handoffs survive changes to the rendering tool. Markdown also makes incompleteness harder to hide. A sparse section looks sparse. HTML can fill the same gap with cards, color, and whitespace without adding evidence. ## Costs of generated HTML ### Source review and version history HTML remains text, so Git can diff it. Generated pages can still be poor review material because reformatting, repeated utility classes, inline SVG paths, and bundled scripts can obscure a one-sentence change. Keep the file unminified. Use stable formatting. Separate structured data from presentation where practical. If the artifact records a team decision, export that decision to Markdown or JSON so reviewers do not have to infer it from DOM changes. A real source comparison where one recovery-window decision changes one line in Markdown but six locations in generated HTML. A real source comparison where one recovery-window decision changes one line in Markdown but six locations in generated HTML. ### Security and sandboxing An HTML file is active content. It can execute scripts, submit forms, open windows, embed other pages, and make network requests. “Self-contained” describes packaging; it does not make the file trustworthy. GitHub accepts `.html` and `.htm` as [pull-request and issue attachments](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/attaching-files), with access following repository visibility. That provides transport, not permission to run the file with the authority of your development tools or review application. Render agent-produced HTML as untrusted. OWASP recommends using a [sandboxed iframe for untrusted content](https://cheatsheetseries.owasp.org/cheatsheets/HTML5_Security_Cheat_Sheet.html#sandboxed-frames). A hosting system should add a restrictive [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Content-Security-Policy/sandbox), isolate the artifact from application credentials and storage, and grant only the capabilities the page needs. If a static page communicates the idea, disable scripts and network access entirely. ### Accessibility Visual structure does not guarantee accessible structure. A grid of styled `
` elements may look like a comparison table while giving a screen reader none of the row and column relationships. Ask for semantic headings, landmarks, tables, labels, alternative text, and native controls. W3C guidance explains why [headings must convey a meaningful hierarchy](https://www.w3.org/WAI/tips/writing/) and why [data tables need programmatic header relationships](https://www.w3.org/WAI/tutorials/tables/). Interactive pages also need a complete keyboard path; native HTML controls provide behavior that custom clickable elements do not get for free. Test the result at the viewport sizes the team supports, with keyboard-only navigation, and with the team’s normal accessibility checks. If the page cannot provide an equivalent linear explanation, it is a poor replacement for Markdown. ### Presentation quality and accuracy Agents can create crowded dashboards, ornamental diagrams, inconsistent controls, and charts that exaggerate weak differences. Review the information design, not only the prose. Verify every claim against the repository, tests, or source data. An elegant architecture map can be wrong, and polished presentation can make a weak claim more persuasive. ## A practical request for an HTML artifact When HTML is justified, give the coding agent a small contract: * state the review question the page must help answer; * make one self-contained, unminified file; * identify source files, data, and the repository revision; * use semantic HTML and a complete keyboard path; * avoid external network requests and third-party scripts; * keep important conclusions available in a linear text view; * export any user-made choice as Markdown, JSON, or a copyable prompt; * label assumptions, missing evidence, and generated examples; * exclude secrets and customer data. Then include the artifact in the agent’s completion package rather than leaving it in a temporary chat. The companion guide to [AI coding agent handoffs](/learn/code-context/ai-coding-agent-handoff) explains what else the team should receive after implementation. ## Limitations No format guarantees understanding. A short Markdown plan can omit the decisive constraint. An interactive HTML explainer can guide reviewers toward the agent’s preferred conclusion. Either can become stale after the implementation changes. Some teams cannot host or share active HTML safely. Markdown plus committed SVG, screenshots, or reports may provide most of the value with fewer assumptions. Choose the format as one part of the review path. Teams still need to connect the requested change, approved context, implementation, validation evidence, and final decision. See [how teams understand AI-generated code before shipping it](/learn/code-context/understand-ai-generated-code-before-shipping) for that complete workflow. ## Frequently asked questions ### Is HTML better than Markdown for AI coding agents? Not generally. Markdown is better for most editable plans, decisions, and handoffs. HTML is better when the task depends on spatial comparison, visualization, interaction, or direct manipulation. ### Should an implementation plan be HTML or Markdown? Use Markdown for the authoritative plan. Add an HTML explainer when a system map, prototype, or multi-option comparison materially helps reviewers test the proposal. Link the two and identify which file carries the approved decision. ### Can I attach an HTML artifact to a GitHub pull request? Yes. GitHub supports HTML file attachments in pull-request conversations. Repository visibility controls who can access the uploaded file. Treat attached HTML as untrusted active content and use a safe viewer rather than opening it with privileged application access. ### How do I make an AI-generated HTML artifact safe to review? Remove secrets, external dependencies, and unnecessary scripts. Render it in an isolated sandbox with a restrictive Content Security Policy. Do not give it access to review-application credentials, local development secrets, or a trusted same-origin context. ### How do I keep an HTML artifact reviewable in Git? Keep it unminified and deterministically formatted, avoid unrelated style churn, separate content data from presentation where practical, and export durable decisions to a simpler text format. Always record which code revision and source data the page represents. ## Which format should an agent use? Use Markdown when the team needs to **read, edit, diff, and preserve a document**. Use HTML when the team needs to **compare, explore, manipulate, or see relationships**. When a workflow needs both, Markdown holds the durable decision while HTML provides a focused interface for understanding it. Open documents and folders in Plannotator, or use the HTML guide when the rendered page is part of the review. *Last reviewed July 29, 2026. Maintained by the Plannotator project.* # What Should an AI Coding Agent Hand Back After It Changes Code? Source: https://docs.plannotator.ai/learn/code-context/ai-coding-agent-handoff A practical team handoff contract for AI-generated code: the request, exact revision, change map, validation evidence, risks, and documentation impact. After changing code, an AI coding agent should hand back a compact index to the request, patch, and evidence. Use a short handoff for a reversible edit and add evidence when the change affects more systems or carries more risk. For a small, reversible edit, those facts may fit in six lines. A cross-cutting authorization change may need an approved plan, migration output, screenshots, and rollout notes. Choose evidence based on the consequences of the change, not the amount of AI used to produce it. An AI coding agent hands a team one versioned evidence folio containing the code diff, decision context, validation, risks, review artifact, and follow-up work. An AI coding agent hands a team one versioned evidence folio containing the code diff, decision context, validation, risks, review artifact, and follow-up work. ## What the patch and summary leave out The Git diff is the implementation record. It does not say which request authorized the work, which paths the agent exercised, which assumptions remain unresolved, or whether a polished screenshot belongs to the current revision. A prose summary helps a reviewer get oriented, but it is still an interpretation of the patch. GitHub recommends that pull request authors provide the purpose, an overview, links to context, and guidance about where to begin reviewing. Authors should also review, build, and test their changes before requesting review. See [GitHub's guidance for making changes easier to review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes). GitHub and Codex already expose parts of this record. GitHub lets reviewers query a Copilot-created pull request's session logs to ask what changed, what was validated, and why. OpenAI's Codex reports citations, terminal logs, and test results. See [GitHub's pull request exploration guide](https://docs.github.com/en/copilot/tutorials/explore-pull-requests) and [OpenAI's introduction to Codex](https://openai.com/index/introducing-codex/). Both vendors still instruct users to review agent-created code before integration. GitHub says to [review Copilot's pull requests thoroughly](https://docs.github.com/en/copilot/how-tos/copilot-on-github/use-copilot-agents/review-copilot-output). Use the handoff as a stable index into the request, code, and evidence a reviewer needs to decide. The diff, CI results, and agent logs remain the source records.
Evidence topology

One index, six source records

Approved request

Intent and constraints

Exact revision

SHA, diff, change map

Validation

Checks and runtime proof

Review artifacts

UI, video, traces

Handoff index

Points to evidence

Risks and questions

What remains unresolved

Documentation

Maintained truth changed

## The compact agent handoff contract Use six required fields. Add conditional evidence only when it applies. | Field | What the agent must provide | | - | - | | **Request** | The issue, request, or [reviewed plan](/learn/code-context/approve-ai-coding-plan-before-execution) that authorized the work, including its revision or date when relevant. State material deviations. | | **Revision** | The repository, branch or pull request, and exact head commit SHA being handed over. | | **Change map** | The user-visible behavior and affected components, with a suggested review order for a multi-file change. | | **Validation** | The exact checks run, their results, and anything skipped, unavailable, or still failing. | | **Open questions and risks** | Unresolved decisions, assumptions, known failure modes, and any follow-up that must happen before or after merge. Say **none identified** when appropriate; do not omit the field. | | **Documentation impact** | The maintained product or technical documents updated by the change, or a brief reason that no durable documentation changed. | Add these fields only when they apply: * **Review artifacts:** screenshots, recordings, HTML walkthroughs, traces, benchmark results, or migration evidence that make behavior inspectable. Explain which claim each artifact supports. * **Data and rollout:** schema changes, compatibility window, backfill, deployment order, feature flag, rollback trigger, and operator ownership. * **Security and privacy:** changed trust boundaries, permissions, secrets, customer data, threat assumptions, and the responsible reviewer. * **Follow-up work:** deferred cleanup or monitoring with an owner and a concrete issue, not vague “future improvements.” Use this template: ```text theme={null} Request: Revision: Changed: Validated: Open questions / risks: Documentation: Conditional evidence: Rollout / rollback: Follow-up: ``` Put the fields in a pull request template if that makes them easier to complete. The agent can populate them, but the person or team presenting the change for review owns their accuracy. ## Make validation evidence specific and revision-bound “Tests pass” is not useful evidence without scope. A reviewer needs to know whether the agent ran one targeted unit test, the repository's complete test suite, a browser flow, or only a type-check. Record the command or named CI job and its result: * `pnpm test --filter authorization`: 42 passed; * `pnpm typecheck`: passed; * checkout browser flow at mobile and desktop widths: passed, screenshots attached; * production-like migration rehearsal: not run; staging database unavailable. Tie that evidence to the handed-off SHA. GitHub status checks are reported against commits, and its Checks view can display results for different commits in the same pull request. See [GitHub's status-check documentation](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/about-status-checks). When the agent pushes another commit, the code under review changes. The handoff and any manually produced evidence may need to change with it. A [revision diff](/learn/code-review/what-is-a-revision-diff) helps a returning reviewer isolate what moved since the last checkpoint instead of assuming an earlier test report or screenshot still applies. Do not paste every successful log into the pull request. Link to full CI output and surface the evidence that changes the decision. State plainly when a check failed, was skipped, or cannot reproduce the target environment. ## Use artifacts to show behavior the diff cannot show Visual and operational changes often need more than textual test output. A UI change may need before-and-after screenshots and a short recording. A parser change may need a table of difficult inputs and outputs. A data migration may need rehearsal counts, timing, and rejected-row samples. These [code review artifacts](/learn/code-review/what-are-code-review-artifacts) provide evidence beside the patch. Claude Code, for example, can publish session artifacts such as pull request walkthroughs, system explainers, and release checklists. Anthropic describes them as pages built from the codebase, connected tools, and session context. See [Anthropic's Claude Code artifacts announcement](https://claude.com/blog/artifacts-in-claude-code). An artifact is not proof merely because it looks complete. Identify its source, revision, and supported claim. Reviewers must still inspect the underlying behavior and code. For format guidance, read [When Should AI Coding Agents Produce HTML Instead of Markdown?](/learn/code-context/ai-agent-html-vs-markdown). ## Small-change fast path Suppose an agent fixes an off-by-one error in pagination, changes one implementation file, and adds one regression test. No API contract, customer-visible workflow, or maintained architecture document changes. The handoff can stay compact: > **Request:** Fix issue #184: page 2 repeats the final item from page 1.
> **Revision:** PR #219 at `71be993`.
> **Changed:** Corrected the cursor offset in `pagination.ts`; added the boundary case in `pagination.test.ts`.
> **Validated:** Targeted test file, 18 passed; type-check passed.
> **Open questions / risks:** None identified.
> **Documentation:** None; the public behavior now matches the existing API documentation. These six lines identify the request, code, and validation claim. A formal planning package or long session transcript would not help the reviewer decide whether to merge this fix. ## Use the full handoff for a cross-cutting change Now suppose a team replaces a synchronous customer-data export endpoint with a queued export service. The implementation touches the public API, a jobs table, a background worker, encrypted object storage, download authorization, the account UI, audit events, retention cleanup, and operator documentation. A useful handoff might say: * **Request:** Export-service plan version 6, approved by product, data, and security. The agent deviated from emailing export files after the security review required a short-lived authenticated download. * **Revision:** Pull request head `c4a912e` in the API repository plus `7b21d0a` in the web repository. * **Change map:** Read the export state machine first, then the jobs migration, worker, object-storage adapter, download authorization, account UI, and retention cleanup. * **Validation:** Unit and integration suites passed; the migration was rehearsed against a sanitized production-shape snapshot; expired and cross-organization download links were rejected; the browser flow passed with screenshots attached. Queue-saturation testing was not run because the staging capacity was unavailable. * **Open questions and risks:** Download links expire after 24 hours. Rollback disables new export requests but allows already queued jobs to finish. Security review and an alert on failed retention cleanup remain required before launch. * **Documentation:** Updated `PRODUCT.md` with the customer-visible lifecycle, `TECH.md` with the storage and authorization boundaries, and the operator runbook with rollout, rollback, queue recovery, and retention steps. Several teams must verify different claims and operate the export service, so the handoff needs more evidence. It remains a map, not an agent transcript. The project's issue, plan, or review system records what was authorized; the handoff records what the agent produced and any deviations. Plannotator's [local plan review loop](/learn/code-context/approve-ai-coding-plan-before-execution) can help refine the plan before that external record is made. After merge, durable decisions should enter [living codebase documentation](/learn/code-context/living-documentation-for-ai-agents). For the complete path from request through team decision, implementation evidence, and shipping, read [How Teams Understand AI-Generated Code Before Shipping It](/learn/code-context/understand-ai-generated-code-before-shipping). ## What a handoff cannot establish * It is authored by the same agent that may have misunderstood the request or missed a failure. Treat its claims as review leads, not independent verification. * Passing tests demonstrate only the paths and assertions they cover. They do not prove the change satisfies the product decision. * A commit SHA identifies code, not every external dependency, service response, or mutable artifact used during validation. * Logs and artifacts can expose secrets or customer data. Redact and retain them according to the repository's access rules. * A large handoff cannot rescue a pull request that is too broad to review. Split the implementation when reviewers cannot form a reliable mental model. Anthropic's long-running agent harnesses used structured updates alongside Git history so the next session could resume the work. A team handoff uses the same practice to prepare an implementation for review. See [Anthropic's long-running agent harness research](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents). ## Frequently asked questions ### What should an AI coding agent include in a pull request? Include the authorizing request, exact head revision, a change map, validation commands and results, unresolved questions and risks, and documentation impact. Add screenshots, HTML, migration evidence, rollout instructions, or security notes only when the change requires them. ### How detailed should an AI coding agent handoff be? Use the smallest handoff that lets another engineer verify the work without reconstructing the agent session. A local fix may need six short lines; a cross-service migration needs more evidence. ### Should the agent include every command and log? No. Include decision-relevant commands and results, note anything skipped or failing, and link to complete logs when useful. Large pasted logs hide signal and can leak sensitive data. ### How can a reviewer verify an agent's handoff? Confirm the request and revision, inspect the diff in the suggested order, open the linked evidence, check that CI belongs to the current commit, and rerun consequential validation when appropriate. Resolve discrepancies against the code and executable behavior, not the agent's prose. ### Who owns the accuracy of an AI coding agent handoff? The person or team delegating the change owns the handoff presented for review. The agent can draft and update it, but it should not certify its own work as correct or ready to merge. ## Check the handoff A reviewer should be able to identify the exact request and revision, inspect the supporting evidence, see what remains uncertain, and find any documentation impact without reopening the private agent session. Open the current local changes in Plannotator and compare the handoff with the actual diff and validation evidence. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # How to Approve AI Coding Plans Before Execution Source: https://docs.plannotator.ai/learn/code-context/approve-ai-coding-plan-before-execution Review an AI coding plan in local open-source Plannotator, send precise feedback, compare revisions with Plan Diff, and approve only the current plan. Approve an AI coding plan only when it states the intended outcome, boundaries, important implementation choices, risks, and validation well enough for the agent to proceed. Open-source Plannotator can show a supported coding agent's plan in your browser and return **Approve** or **Send Feedback** to that local session. Some agents wait for your decision. On Claude Code 2.1.287 or later and on Pi, the agent ends its turn and your decision arrives later as a message. **Approve** answers only the active local agent session. It does not record reviewer identity or authorization. A conceptual software workflow moves from a change request through a team decision and planning context to agent execution, verified code, and maintained documentation. A conceptual software workflow moves from a change request through a team decision and planning context to agent execution, verified code, and maintained documentation. Keep a shared authorizing record in Git, an issue, a pull request, or another document system when the decision must be available to the team. ## Decide how much review the change deserves | Change | Useful planning record | | - | - | | Small, reversible correction | A short plan in the agent conversation may be enough | | Cross-cutting feature | A reviewed coding plan with scope, dependencies, and validation | | Durable behavior or protocol | A technical specification plus a current implementation plan | | Significant architecture choice | An ADR linked from the specification or plan | | Broad proposal needing discussion | An RFC before implementation planning | Start with the [AI coding plan template](/templates/ai-coding-plan). If the document needs to stay current after implementation, use the [technical specification template](/templates/technical-specification) as a separate maintained record. If the request still contains major unknowns, use the [iterative planning workflow](/learn/planning/how-to-plan-with-ai-coding-agents) to explore the codebase, interview the human, and test the riskiest assumption before submitting a plan for approval. ## What happens during plan review For agents that support automatic plan review, the plan-mode hook starts Plannotator and opens the proposed Markdown in your browser. You can: * select text and add a comment; * mark text for deletion; * edit the Markdown directly; * add overall feedback; * approve the current plan; or * send feedback to the agent. Choose **Approve** when the current plan needs no changes. Plannotator returns an approval result to the agent session so the agent can continue. Choose **Send Feedback** when you added comments, deletions, edits, or overall feedback. Plannotator formats that feedback and returns it to the agent. The agent can then revise and submit another plan. Approving with unsent annotations does not turn those annotations into implementation instructions. Use **Send Feedback** when you want the agent to act on them. ## Review the plan before you approve it A useful plan gives you enough information to find a wrong assumption before the agent changes code. Check the parts that could change the implementation: * intended behavior and explicit non-goals; * affected files, services, data, or APIs; * security and compatibility constraints; * migration, rollout, and rollback steps where relevant; * tests and other evidence the agent should produce; * unresolved questions that require a decision. Small, reversible changes may need only a short plan. Security, data, migration, infrastructure, and public API changes usually need more detail because an incorrect direction is expensive to undo. The Rust project's [RFC process](https://rust-lang.github.io/rfcs/) is a useful source of review questions for consequential design changes. Warp's public [APP-2527 specification](https://github.com/warpdotdev/warp/tree/master/specs/APP-2527) shows one way to separate product behavior from technical implementation. You do not need to copy either structure. Use only the sections that help you verify the proposed work. ## Use Plan Diff for revised plans Plannotator saves each arriving plan to local version history before opening the review. When the agent submits a revision, select the `+N/-M` badge to compare it with the previous version. Use the rendered view to inspect changed sections in context. Use the raw view when the exact Markdown matters. The Version Browser lets you choose an older stored version as the comparison base. Before approving a revision, check that it: 1. addresses the feedback you sent; 2. keeps decisions that were already correct; 3. does not introduce a new unsupported assumption; and 4. still describes the version the agent is about to implement. If other people need to review the plan or cite the decision later, commit the exact Markdown to Git or review it in the issue, pull request, or document system your project already uses. The [Workspaces plan and technical-decision workflow](https://help.plannotator.ai/workspaces/review-plans-and-technical-decisions) covers the separate job of sharing one plan or specification with several people and agents. Its versions record document change, not named approval. ## Keep the reviewed plan tied to the implementation An agent may discover that the plan cannot work as written. Ask it to stop and return to plan review when new evidence changes a consequential decision, such as: * an incompatible API client; * an unsafe migration path; * a missing authorization boundary; * a requirement that conflicts with current behavior; or * validation that cannot demonstrate the promised result. Review the revised plan with Plan Diff, then approve the current version or send another round of feedback. Do not rely on an earlier approval after the plan has materially changed. Plan review also does not replace code review. After implementation, inspect the actual diff, run the relevant checks, and compare the result with the plan. ## A practical review loop 1. Let the supported agent enter plan mode and open Plannotator. 2. Read the proposed behavior, scope, constraints, and validation steps. 3. Add comments or edit the plan where it is incomplete or incorrect. 4. Select **Send Feedback**. 5. When the agent resubmits, open Plan Diff and inspect the changes. 6. Select **Approve** only when the current plan is ready for implementation. 7. Review the resulting code separately. See supported agents, plan history, feedback controls, and Plan Diff behavior. ## Frequently asked questions ### What happens when the plan changes after I approve it? Treat the changed plan as a new proposal. Review its diff and decide again before the agent implements the new direction. ### Can the agent review its own plan? The agent can critique the plan, investigate the repository, and surface uncertainty. You still choose **Approve** or **Send Feedback** in the local review. ### Should every task use plan review? No. Use it when reviewing the direction will reduce meaningful implementation risk. A small, reversible edit may be faster to verify in the code diff. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # HTML Wireframes and Prototypes for Coding Agents Source: https://docs.plannotator.ai/learn/code-context/html-wireframes-and-prototypes-for-coding-agents Design the interface yourself and iterate in the browser before anyone writes production code. Use a coding agent and one HTML file to test structure, visual direction, and interaction. You do not have to wait for a designer or a Figma pass to make the idea visible. A coding agent can turn the brief into an HTML interface, revise it with you in the browser, and keep iterating until the team knows what to build. Plannotator packages this workflow for coding agents in [Effective HTML](https://github.com/plannotator/effective-html), its open-source skill repository. An **HTML wireframe** is a low-fidelity web page used to test structure, content, and task order. Make one when a coding agent and reviewer still need to decide what belongs on the screen. An **HTML mockup** applies visual hierarchy, spacing, color, typography, and responsive layout to the agreed structure. Make one when the team needs to judge appearance before it spends time on behavior. An **HTML prototype** adds the smallest useful interactions and state changes. Make one when reviewers need to click through a flow, test a transition, or see how the interface responds to input. The same release-readiness interface progresses from a restrained HTML wireframe through a styled mockup to an interactive prototype whose state changes from blocked to ready. The same release-readiness interface progresses from a restrained HTML wireframe through a styled mockup to an interactive prototype whose state changes from blocked to ready. ## Design the interface before you code it The browser becomes the design surface. Ask the agent to move a section, change the hierarchy, try another visual direction, or wire the critical interaction. You see each revision immediately, while changing course still means editing one HTML file. For a bounded screen or flow, one HTML file can take the place of separate sketch, static mockup, and clickable-demo passes. Reviewers work against the actual hierarchy and behavior in the browser instead of waiting for the idea to be rebuilt in another tool. Move into a dedicated design tool when the work needs its component libraries, vector editing, multiplayer workflows, or formal design handoff. Judge efficiency across the whole loop. HTML may use more tokens than a Markdown plan. It can still save tokens overall if the visible artifact prevents an implementation pass on the wrong structure or behavior. Stop when the artifact answers the current question. Many tasks need only a wireframe or a focused prototype. Anthropic engineer Thariq Shihipar describes this working style in [The unreasonable effectiveness of HTML](https://claude.com/blog/using-claude-code-the-unreasonable-effectiveness-of-html). He uses HTML to compare options, expand ideas into mockups, and then write an implementation plan. The format is valuable because it keeps the human engaged with the choices instead of handing those choices to the agent. [Geoffrey Litt argues that understanding is now the bottleneck](https://www.geoffreylitt.com/2026/07/02/understanding-is-the-new-bottleneck.html) when agents can produce code faster than people can follow it. He uses explainers, interactive figures, and shared Notion pages to help people build intuition and participate in the next decision. An HTML wireframe or prototype serves the same purpose before implementation: it gives a person, a team, and an agent one visible object to question together. ## How do an HTML wireframe, mockup, and prototype differ? | Review question | HTML wireframe | HTML mockup | HTML prototype | | - | - | - | - | | **Purpose** | Decide what the interface contains and how the task is ordered | Decide how the agreed structure should look and respond to screen size | Test the important behavior, states, and transitions | | **Fidelity** | Low. Real labels and content, restrained presentation | Medium to high. Representative visual system and responsive layout | Only as high as the tested flow requires | | **Interaction** | Links or controls may be inert | Usually static, even if controls look finished | Working controls for the chosen scenario | | **Time and cost** | Lowest. Usually the fastest way to test a bounded screen | More visual iteration and breakpoint work, but no production components yet | More state logic and testing, but only for the chosen flow | | **Best review questions** | Is anything missing? Is the order right? Is the primary task clear? | Is the hierarchy clear? Is the layout readable and consistent? | Can a user complete the task? Are state changes and recovery paths clear? | | **Do not decide yet** | Final color, typography, animation, component implementation | Production data flow, authorization, performance, final edge-case behavior | Production architecture or whether the shipped code passes its real checks | Use only the stages that answer an open question. A team may stop at a wireframe because the structure is settled. It may jump from a sketch to a prototype when behavior is the main uncertainty. ## Start with one product brief The brief is the first alignment boundary. Keep the same brief through all three stages. Changing the problem while increasing fidelity makes it hard to tell whether feedback concerns the product or the presentation. This guide uses a fictional release-readiness page for Atlas Mobile 4.8: * A release manager must decide whether one release candidate can go to production. * The page must show the commit, owner, four required checks, supporting evidence, open risks, reviewer notes, and current decision. * The page starts blocked because the iOS smoke test failed. * A passing rerun changes the release from blocked to ready and enables the release action. * The prototype must not start a real deployment, authenticate a user, or load live build data. The exercise stops at the release decision. The agent does not need to invent authentication, live data, or deployment behavior to answer it. ## Keep the artifact structure visible Store the brief, state model, HTML, and review notes together: ```text theme={null} html-wireframes-prototypes/ ├── brief.md ├── release-readiness.html ├── states.md └── review-notes.md ``` The example uses one self-contained HTML file with `wireframe`, `mockup`, and `prototype` modes. Separate files also work, but shared content can drift unless the agent updates each copy deliberately. The supporting files have distinct jobs: * `brief.md` fixes the user, task, required information, behavior, and non-goals. * `release-readiness.html` contains the visible artifact and the prototype logic. * `states.md` names each state, its trigger, visible result, and available action. * `review-notes.md` separates accepted decisions from open questions. ## Stage 1: make the HTML wireframe Use real headings, labels, controls, and representative content. Low fidelity does not mean unlabeled gray boxes. Reviewers need enough detail to judge whether the screen supports the task. The release wireframe includes: * a header with the release candidate, commit, and owner; * a summary of checks passed, open risks, and release state; * four named checks with evidence; * a reviewer-notes area; * a blocked decision and its next action. It leaves out the final palette, shadows, rounded corners, animation, and production components. The primary question is whether a release manager can find the information needed to decide. The focused view below exposes grouping, measurement, and hierarchy without suggesting that the surface design is finished. A low-fidelity release-readiness wireframe fills the frame while an offset tracing-paper layer isolates its header, summary blocks, evidence rows, and reviewer notes column. Measurement marks and sparse review strokes show that the structure is under review. A low-fidelity release-readiness wireframe fills the frame while an offset tracing-paper layer isolates its header, summary blocks, evidence rows, and reviewer notes column. Measurement marks and sparse review strokes show that the structure is under review. Give the agent a bounded instruction: ```text theme={null} Read brief.md and states.md. Create one self-contained, responsive HTML wireframe. Use semantic headings, sections, lists, and native controls. Use real copy from the brief. Keep the presentation grayscale and restrained. Show the blocked state, but do not implement interactions yet. Review target: content, information hierarchy, task order, and missing states. Do not choose final colors, typography, animation, or component architecture. ``` Review the wireframe with questions that can change its structure: * Does the page answer “Can this build go to production?” without another screen? * Are machine results and reviewer notes visibly separate? * Is the failed check specific enough to investigate? * Is the next action clear while release remains blocked? * What information could be removed without weakening the decision? If the structure is still open, ask the agent for two or three materially different wireframes in one HTML file. Compare them in one review, choose one, and discard the rest. This is faster than styling the first plausible idea and learning later that its structure was wrong. ## Stage 2: turn it into an HTML mockup Freeze the structure before styling it. The mockup should preserve the same information, order, and states unless the visual pass exposes a structural problem. For the release example, the mockup adds: * Plannotator-adjacent violet, blue, and orange accents; * a stronger visual distinction between evidence, notes, and the decision; * readable spacing and type hierarchy; * a compact desktop summary that becomes a single column on narrow screens; * visible pass, fail, blocked, and ready colors with text labels. Keep the release logic out of the mockup. Its controls can remain inert because the review question is visual. ```text theme={null} Use the approved wireframe as the source. Preserve its content, DOM order, labels, and states. Apply the product's existing color, type, spacing, border, and focus tokens. Create a responsive layout for wide desktop and narrow mobile widths. Keep pass, fail, blocked, and ready understandable without color alone. Review target: hierarchy, scanability, contrast, responsive behavior, and fit with the existing design system. Do not add new product behavior. ``` Compare the mockup with the wireframe rather than reviewing it in isolation. Any missing field or changed task order should be an explicit decision, not a side effect of styling. This is the cheapest point to reject a visual direction. The next pass should change CSS and layout, not rewrite production components. ## Stage 3: make the interactive HTML prototype Add only the behavior needed to answer the unresolved interaction question. For Atlas Mobile, that question is: what changes after a reviewer records a passing smoke-test rerun? The prototype implements one flow: 1. The page starts with 3 of 4 checks passed and the release blocked. 2. The reviewer records a passing iOS smoke test. 3. The failed check changes to pass. 4. The summary changes to 4 of 4. 5. The decision announces that the release is ready. 6. The production-release action becomes available. Keep authorization, live data, persistence, audit history, real network requests, and deployment behavior out of this prototype. The local save flow simulates an evidence-service failure and retry so reviewers can test error feedback and recovery without calling a real service. Once reviewers accept the transition, the artifact becomes a concrete reference for implementation. The coding agent can inspect the state names, visible results, and accepted interaction instead of inferring them again from prose. The focused prototype view keeps one interaction path in frame: the blocked state, the action and its keyboard focus, the visible feedback, and the ready result. A blocked release-readiness screen with one failed and three passed checks connects through a focused action to a raised ready-state overlay where all four checks pass. One orange trace links the trigger, visible feedback, and enabled result. A blocked release-readiness screen with one failed and three passed checks connects through a focused action to a raised ready-state overlay where all four checks pass. One orange trace links the trigger, visible feedback, and enabled result. ```text theme={null} Preserve the approved mockup. Implement only the blocked-to-ready flow in states.md. Use native buttons and a complete keyboard path. Announce the decision change through an aria-live status. Keep the release action disabled until all four checks pass. Make the final action explain that this is a prototype rather than starting a real release. Review target: trigger, state transition, feedback, focus behavior, keyboard operation, and the point where the real system would take over. ``` W3C's [WCAG 2.2 keyboard requirements](https://www.w3.org/TR/WCAG22/#keyboard-accessible) apply to prototypes too. A clickable mockup that cannot be operated from a keyboard may hide a problem the production team later has to undo. ## Why does HTML make this loop faster? HTML combines the plan and the visible result in one inspectable file. A static picture can show appearance. A prose plan can describe behavior. HTML can show both, then let a reviewer test the transition that connects them. That shortens the distance between an idea, evidence, and a revision: * **Inspectable:** Browser developer tools expose the DOM, CSS, dimensions, roles, names, and focus behavior. Chrome documents how its [Inspect mode reveals element and accessibility properties](https://developer.chrome.com/docs/devtools/inspect-mode). * **Editable:** Reviewers or agents can change the source with ordinary text tools and track those changes in Git. * **Responsive:** One artifact can use flexible layout and media queries instead of maintaining separate desktop and mobile pictures. MDN explains the relevant [responsive-design techniques](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design). * **Runnable:** A browser can exercise controls, state changes, validation, and focus order without building the production application. * **Reviewable:** A team can annotate the rendered page, inspect the source diff, and hand exact feedback back to a person or coding agent. Use HTML when the reviewer needs to see structure and behavior together. Use a paper sketch, a short Markdown decision, or a static image when one of them answers the question with less work. The existing [HTML versus Markdown guide](/learn/code-context/ai-agent-html-vs-markdown) explains when HTML earns its extra source and security cost. ## How should a person or coding agent review the artifact? Name the stage before giving feedback. “The page feels wrong” does not tell the agent which decisions may change. Use these targets: | Stage | Exact feedback targets | | - | - | | Wireframe | Missing information, wrong grouping, task order, primary action, decision boundary, and failure paths | | Mockup | Visual hierarchy, spacing, type scale, contrast, responsive reflow, design-system fit, and whether state meaning survives without color | | Prototype | Trigger, state transition, loading and error behavior, keyboard path, focus movement, status announcements, reversibility, and handoff to the real system | A useful comment names the location, observed problem, requested change, and acceptance check: > Prototype, blocked-to-ready transition: the summary stays at 3 / 4 after the smoke test passes. Update it to 4 / 4, announce the ready state, and keep the release action disabled until both changes occur. Another coding agent can review the same targets. Ask it to compare the artifact with `brief.md` and `states.md`, report contradictions, and test the named flow. Do not ask it whether the interface is “good.” Give it the same bounded questions a human reviewer receives. End the review with explicit decisions: * **Structure accepted:** required content, grouping, task order, and primary action are settled. * **Visual direction accepted:** hierarchy, responsive behavior, and state treatment are settled. * **Tested behavior accepted:** the named trigger, transition, feedback, and recovery path are settled. * **Production questions recorded:** data, permissions, failures, performance, and implementation details remain visible rather than being guessed. Implementation can now begin from an agreed reference. If one of those decisions is still open, revise the artifact first. To review the rendered file with [Plannotator](https://plannotator.ai/): ```bash theme={null} plannotator annotate release-readiness.html ``` Plannotator renders local HTML in a sandboxed iframe and can return selected-text or pinpoint feedback to the active coding-agent session. Its sandbox still permits the HTML to make outbound requests, so keep review artifacts self-contained and inspect untrusted scripts. See the current [open-source HTML annotation workflow](/open-source/workflows/html). The broader [website and HTML annotation guide](/learn/annotate-any-web-page-or-html-file) covers URL imports, folders, and the separate live-page workflow. ## Where does Effective HTML fit? [Effective HTML](https://github.com/plannotator/effective-html) is the companion skill repository for producing self-contained HTML artifacts. Its current [`html` skill](https://github.com/plannotator/effective-html/tree/main/skills/html) covers explainers, comparisons, decks, and prototypes, and its bundled examples include prototype animation and interaction. Effective HTML now includes the dedicated [`html-wireframe`](https://github.com/plannotator/effective-html/tree/main/skills/html-wireframe) skill for low-fidelity structure and the [`html-prototype`](https://github.com/plannotator/effective-html/tree/main/skills/html-prototype) skill for styled mockups and working interaction. Together they package this progression directly, from restrained structural choices to focused interaction tests. Use Effective HTML to give an agent a stronger visual starting point and a repeatable way to create the artifact. Pair it with the brief, state model, review questions, and acceptance checks so each revision answers an explicit product question. ## Choose the next tool by the unresolved question Keep working in HTML while reviewers are deciding structure, visual direction, or a bounded interaction. Switch when the next question depends on a capability the artifact does not have. * Move to Figma or another shared design tool when the work depends on its component libraries, vector editing, multiplayer design workflows, or formal handoff. * Move to production code when the question depends on real data, framework components, permissions, performance, or integrations. * Record the accepted decision in Markdown when it needs to remain readable and editable without the browser artifact. * Start with paper or a whiteboard when drawing the first structure is faster than asking an agent to build it. Choose the least expensive artifact that makes the current uncertainty testable. ## Frequently asked questions ### Is an HTML wireframe the same as an HTML mockup? No. An HTML wireframe tests structure, content, and task order with restrained presentation. An HTML mockup applies a representative visual system to that structure so reviewers can judge hierarchy, spacing, color, typography, and responsive layout. ### What makes an HTML mockup a prototype? The artifact becomes a prototype when its behavior is part of the review. Working controls, transitions, validation, loading, errors, or recovery paths let reviewers test what happens, not only how the screen looks. ### Should a coding agent start with a wireframe? Start with a wireframe when the content, grouping, or flow is uncertain. Skip it when the product already has an approved structure and the open question is visual or interactive. ### Is this a hosted AI wireframe generator? No. This is a file-based workflow for people and coding agents. Effective HTML provides skills and examples for creating HTML artifacts. Plannotator opens and annotates the resulting files. Neither is presented here as an online AI wireframe generator. ### Can a prototype become the production interface? Sometimes. A prototype built with the production framework and components may be ready to integrate. A standalone HTML artifact is usually the reference for the accepted behavior, which the team then connects to the application's data, permissions, tests, security boundaries, and performance requirements. *Published July 29, 2026, by the Plannotator documentation team. Last reviewed July 29, 2026. Maintained by the Plannotator project.* # How to Keep Codebase Documentation Current When AI Agents Write Code Source: https://docs.plannotator.ai/learn/code-context/living-documentation-for-ai-agents A practical workflow for keeping codebase documentation current as AI coding agents plan, implement, test, and revise software. To keep codebase documentation current when AI agents write code, update it as part of the same change as the implementation. Start from current repository context, approve the intended change, capture material discoveries while the agent works, verify the result against executable behavior, and merge the documentation update with the code. Keep the original RFC as history. Use the maintained product and technical documents to explain what is true now. A large retrospective written after the pull request is less reliable. The agent may have to reconstruct intent from stale plans, partial chat history, and code it did not personally execute. An AI coding agent and a human reviewer update a living codebase handbook from the current code diff and validation while preserving an earlier RFC as history. An AI coding agent and a human reviewer update a living codebase handbook from the current code diff and validation while preserving an earlier RFC as history. ## Separate current documentation from historical records Living documentation records the behavior and constraints that future engineers and agents should trust. It might include: * a `PRODUCT.md` that explains user-visible behavior and product boundaries; * a `TECH.md` that explains system components, data flow, and operational constraints; * an API contract generated from, or checked against, the implementation; * a searchable handbook under `docs/`; * runbooks for deploying, observing, and recovering the system; * repository instructions for coding agents. It should not contain every discussion that produced the system. Review threads, RFCs, plans, and agent progress logs remain useful, but they answer historical questions: What did we propose? Which alternatives did we reject? What happened during execution? Maintained documentation answers a different question: > If I need to change or operate this system today, what should I believe? A repository can accumulate detailed feature directories without identifying which one describes current behavior. Maintainers need to designate the current source. GitHub's [Spec Kit persistence guidance](https://github.github.com/spec-kit/concepts/spec-persistence.html) makes this choice explicit. A team can keep feature artifacts as immutable history, continuously reconcile them with implementation discoveries, or treat a living specification as the contract. Whichever model a team chooses, contributors need to know which documents are historical and which are authoritative.
Documentation roles

Two records, two questions

Current documentation

What is true now?

  • PRODUCT.md
  • TECH.md
  • API contract
  • Handbook and runbooks

Decision history

How did we get here?

  • RFC and approved plan
  • Review thread
  • Progress log
  • Superseded decisions

Link current truth to its rationale without forcing agents to reconstruct the present from old discussions.

## Put documentation in the implementation loop Spec-driven tools already create structured context before code. GitHub Spec Kit, for example, uses a [Spec → Plan → Tasks → Implement workflow](https://github.github.com/spec-kit/). Those artifacts help an agent avoid jumping directly from an issue to a patch. Once implementation begins, code exposes details the plan could not know: an old client depends on undocumented behavior, a database invariant differs from the architecture diagram, or a browser interaction fails in a state the acceptance criteria missed. Feed those discoveries back into the maintained documents without rewriting history: Link the change request to the current product, technical, API, and operational documents. If those sources disagree before work starts, resolve the disagreement or name it as part of the requested change. Review the consequential product and engineering decisions before broad agent execution. Pin the exact version in Git or the project system when other people need a durable record. [How to Approve AI Coding Plans Before Execution](/learn/code-context/approve-ai-coding-plan-before-execution) explains Plannotator's local feedback, Plan Diff, and Approve loop. When an agent finds a material contradiction or missing decision, record it in the pull request or live draft while the evidence is available. Do not bury a changed product rule inside a code comment or an agent chat. Run the relevant unit, integration, contract, migration, and end-to-end checks. Review the implementation and its [code review artifacts](/learn/code-review/what-are-code-review-artifacts), such as screenshots, browser traces, or test output. A generated explanation is a claim until executable behavior supports it. Edit only the maintained pages affected by the accepted behavior. Link to the historical RFC for rationale instead of copying its entire narrative into the handbook. Keep the approved request, important deviations, implementation revision, validation evidence, and final decision connected. Mark superseded documents clearly rather than deleting the evidence or leaving two sources that both appear current. GitHub's guidance for [evolving Spec Kit artifacts](https://github.github.com/spec-kit/guides/evolving-specs.html) tells teams to decide whether an implementation discovery changes intended behavior, implementation strategy, task breakdown, or only code, then reconcile the artifacts that now disagree. ## A repository-based example Consider a team replacing a single-request upload API with resumable uploads for large files. Its repository contains: ```text theme={null} docs/ PRODUCT.md TECH.md uploads.md operations/upload-recovery.md specs/ 017-resumable-uploads/ RFC.md PLAN.md VALIDATION.md ``` The RFC proposes multipart upload sessions, resumable offsets, a 24-hour cleanup rule, and compatibility for clients that still send one request. Product, API, storage, and operations owners record the accepted revision in their project system. A coding agent implements against that checkpoint. During retry testing, the agent finds that the mobile client reuses an idempotency key after a network timeout, behavior absent from both the plan and `uploads.md`. The discovery changes the compatibility contract and the server state machine. The team should not let the agent invent retry semantics or rewrite the documentation to match the easiest implementation. It should return the discovery for a decision and approve the new direction. The agent then implements the idempotency rule and provides a handoff naming the exact revision, tests, risks, and documentation impact. See [What Should an AI Coding Agent Hand Back After It Changes Code?](/learn/code-context/ai-coding-agent-handoff). Before merge, reviewers check four things together: 1. Contract and retry tests demonstrate the accepted upload and resume behavior. 2. Expiration, cleanup, storage-failure, and rollback behavior match the reviewed plan. 3. `docs/PRODUCT.md`, `docs/TECH.md`, and `docs/uploads.md` describe the shipped system. 4. `specs/017-resumable-uploads/RFC.md` remains an immutable decision record and links to the final implementation. The RFC explains how the team reached the result. The maintained documents explain how uploads work after it ships. Tests and running behavior determine whether either explanation is accurate. Warp offers a concrete example of splitting feature intent from implementation detail: its public [APP-2527 specification](https://github.com/warpdotdev/warp/tree/master/specs/APP-2527) contains separate `PRODUCT.md` and `TECH.md` files. A team still needs a convention for carrying accepted behavior into whichever documentation future contributors read first. ## Repository files make the maintenance rule enforceable Keeping documentation near code enables several maintenance checks: * A pull request can show code and documentation changes together. * `CODEOWNERS` or required reviewers can route affected documents to the right owners. * CI can build the documentation, check links, validate schemas, and test code samples. * Git history can show when an explanation changed and which implementation changed with it. * Agent instructions can identify the maintained documents that must be read before a particular system is modified. [mdBook](https://rust-lang.github.io/mdBook/) is one lightweight example: it turns repository Markdown into a navigable, searchable site. Its CLI can also [test Rust code samples](https://rust-lang.github.io/mdBook/cli/index.html), allowing teams to check some documentation claims automatically. Repository placement also gives coding agents normal file access. Clear entry points are still required. A large `docs/` tree with contradictory pages gives an agent more material but no reliable source. ## Verify generated documentation An agent can inventory changed files, draft release notes, update examples, and identify stale documents. It can also confidently describe behavior the program does not have. Anthropic's work on [long-running coding-agent harnesses](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents) found that progress files and Git history helped later sessions recover context, but it also found agents could mark work complete without proper end-to-end testing. Explicit browser testing exposed failures that code inspection and narrower checks missed. Check generated documentation against: * the approved request for intended behavior; * the code diff for the mechanism; * tests and runtime evidence for observed behavior; * domain owners for product and operational meaning. The agent's narrative is a draft, not independent proof. For dense comparisons or interactive explanations, an agent may produce HTML alongside durable Markdown. [When Should AI Coding Agents Produce HTML Instead of Markdown?](/learn/code-context/ai-agent-html-vs-markdown) explains when that improves understanding and when it merely adds maintenance cost. ## Skip documentation updates when behavior does not change Not every edit changes durable behavior. A typo fix, local refactor, dependency patch with no contract change, or test-only cleanup may require no handbook update. Use one short question in the pull request or agent handoff: > Does this change alter a user-visible behavior, public or internal contract, system constraint, operating procedure, or fact that future contributors rely on? If the answer is no, record **no durable documentation impact** and continue. Do not make the agent perturb an unrelated page merely to satisfy a checklist. If the answer is yes, name the exact maintained files and update them with the implementation. A small documentation impact field is enough to identify the required work without adding a separate approval process. ## Limitations Living documentation cannot make every repository fact current automatically. * Some behavior exists only at runtime or in external infrastructure. * Tests can be incomplete or encode the wrong expectation. * Generated API references may be accurate but still fail to explain intent. * A document owner can approve prose without noticing a contradictory implementation. * Fast-moving teams may accept temporary drift during incidents or migrations. * Historical records can expose sensitive design or security details and may need access controls. Readers should be able to identify which source is current, how the team verified it, and where to look when code and documentation disagree. ## Frequently asked questions ### What is living documentation for AI coding agents? It is maintained product, technical, API, and operational context that changes with the system and is available to both people and agents. It describes current behavior rather than only preserving the plan for one completed feature. ### Should an RFC be updated after implementation? Usually, preserve an approved RFC as decision history and update separate maintained documentation with the shipped behavior. If your team intentionally uses a living-spec model, revise the specification and keep its derived plan and tasks consistent. State the convention explicitly. ### Should an AI agent update documentation automatically? It can draft the update and identify likely affected pages. A reviewer should compare the draft with the approved request, code, tests, and observed behavior before treating it as current documentation. ### How do you prevent codebase documentation from becoming stale? Put a documentation-impact decision in the implementation and review workflow, update affected documents in the same pull request, assign owners, and add automated checks for build failures, broken links, schemas, and executable examples where those checks are possible. ### Does every AI-generated code change need a documentation update? No. Changes that do not alter durable behavior, contracts, constraints, or operating procedures should use the fast path and record that there is no documentation impact. ### Are repository Markdown files enough for coding agents? They work well as a default because they are portable, versioned, searchable, and easy for agents to read. They are not enough when the files conflict, lack clear ownership, omit runtime facts, or cannot express a comparison or interaction that would be clearer in another artifact. ## When a consequential change is complete Treat a consequential change as complete when the code, executable evidence, and maintained explanation agree. If they do not agree, record the remaining disagreement. The workflow in [How Teams Understand AI-Generated Code Before Shipping It](/learn/code-context/understand-ai-generated-code-before-shipping) shows how teams check that agreement. Future engineers and agents can start from the system the team operates while retaining the original request and decision trail for historical context. Open Markdown, text, HTML, or a folder in Plannotator and return annotations to the active coding agent. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # How Teams Understand AI-Generated Code Before Shipping It Source: https://docs.plannotator.ai/learn/code-context/understand-ai-generated-code-before-shipping A practical workflow for understanding AI-generated code by connecting the approved request, implementation, evidence, review, and final team decision. A team understands AI-generated code before shipping it when reviewers can connect the **requested change**, the **context the team approved**, the **actual implementation**, the **evidence that demonstrates its behavior**, and the **decision to ship**. An AI summary can help reviewers find those pieces, but it cannot establish that they agree. Product, engineering, and operations each inspect the part they own, then explain what they accepted. Small, reversible changes do not need a formal process merely because an AI agent wrote them. A developer can often work conversationally with a capable model, inspect the patch, run focused tests, and use an ordinary review. Add more structure when several people need the same context, the change is consequential, or the implementation is too large for one person to hold comfortably. Two teammates and the Plannotator mascot trace one AI-generated change from its request and system behavior through the code diff to passing validation evidence. Two teammates and the Plannotator mascot trace one AI-generated change from its request and system behavior through the code diff to passing validation evidence. ## What an AI summary can and cannot establish GitHub Copilot can [summarize a pull request and explain changes in specific files or lines](https://docs.github.com/en/copilot/tutorials/explore-pull-requests). For an agent-created pull request, it can also use the agent's session logs to explain what changed, what was validated, and why. A reviewer can use that summary to identify affected subsystems, important files, claimed behavior, and validation performed. The summary may still omit a risky edge case, describe intended rather than actual behavior, or accurately describe code that implements the wrong decision. GitHub's own guidance tells authors to include purpose, additional context, requested review depth, and a useful reading order. See [Helping others review your changes](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/getting-started/helping-others-review-your-changes). Use the summary to decide where to look. Use the request, code, tests, runtime behavior, and discussion to decide whether the change is correct. ## Treat understanding as one inspectable chain A team can inspect six concrete objects: | Object | The question it answers | | - | - | | Request for change | What outcome does the team want, and why? | | Approved context | Which exact decisions, constraints, and validation requirements may the agent act on? | | Implementation | What code, data, APIs, and operational behavior changed? | | Review artifacts | What screenshots, recordings, HTML, test output, or other evidence demonstrate the result? | | Current revision | Which exact version has each reviewer inspected? | | Team decision | What did the responsible reviewers accept, reject, or record as a known risk? | Code that implements an obsolete plan is still wrong for the current request. A screenshot from an earlier revision does not demonstrate the code being approved. A reviewer who read revision 3 has not reviewed revision 5. The team needs shared, versioned context instead of one developer's private agent conversation. ## A worked example: changing account deletion Suppose a company currently deletes customer accounts immediately. The team wants a 30-day recovery period without weakening the promise that a deleted user loses access at once. This touches authentication, stored data, background work, and support operations. “Add recoverable account deletion” is not enough context to authorize an implementation. ### 1. The team approves the behavior before code exists Product, identity, and data owners review a shared plan. Version 4 says: * `DELETE /v1/account` returns `202 Accepted` and marks the account `pending_deletion`; * all browser sessions, API keys, and refresh tokens stop working immediately; * a deletion worker permanently removes eligible records after 30 days; * support can restore the account during that window, with an audit event; * retained payment records stay inaccessible to the user; * migration, rollback, and queue-failure tests are required. The project records the named owners' decision on version 4 in its normal system. The coding agent receives that exact checkpoint, not whichever draft happens to be newest. Plannotator can help [review and compare the local plan drafts](/learn/code-context/approve-ai-coding-plan-before-execution), but it does not create the identity or authorization record. ### 2. The agent produces a change map The agent's pull request changes the account route, token validation, account table, deletion worker, OpenAPI file, and support tooling. Its handoff names the approved plan and current commit, then points reviewers to the important paths: ```text theme={null} apps/api/routes/delete-account.ts packages/auth/validate-session.ts workers/account-deletion.ts db/migrations/0142_pending_deletion.sql openapi/account.yaml ``` The identity owner can begin at token invalidation while the data owner traces retention and deletion. Not every reviewer must read every file in the same order. Use the reusable completion format in [What Should an AI Coding Agent Hand Back After It Changes Code?](/learn/code-context/ai-coding-agent-handoff). ### 3. Reviewers follow the risky paths into the code The identity reviewer traces `DELETE /v1/account` through the database state change and every credential check. The data reviewer follows the worker through deletion and retained records. The operator checks retries, idempotency, metrics, and rollback. They use the agent's explanation to locate code, then verify its claims. Reviewers move between high-level intent and concrete state transitions, failure paths, and neighboring invariants until the behavior is coherent. A Microsoft field study found that code and change understanding was central to modern review. Review also produced knowledge transfer, team awareness, alternative solutions, and defect detection. See [Expectations, Outcomes, and Challenges of Modern Code Review](https://www.microsoft.com/en-us/research/publication/expectations-outcomes-and-challenges-of-modern-code-review/). ### 4. Artifacts make behavior inspectable The agent attaches a browser recording, state-transition diagram, focused test output, and small HTML report for comparing failure paths. HTML earns its place because the review depends on several states and outcomes; the linear plan remains Markdown. [When Should AI Coding Agents Produce HTML Instead of Markdown?](/learn/code-context/ai-agent-html-vs-markdown) covers that choice. Each file supports a specific claim. The recording demonstrates the flow, the tests identify exercised cases, and the report compares queue, token, and restoration paths. [What Are Code Review Artifacts?](/learn/code-review/what-are-code-review-artifacts) explains how evidence beside the diff becomes part of the review. ### 5. A finding changes the implementation The identity reviewer discovers that access tokens are rejected immediately, but a refresh token can still mint a new access token until the deletion worker runs. The implementation contradicts the approved plan. The approved context already settled the expected behavior. The agent fixes refresh-token validation, adds a regression test, and updates the change map. An approved account-deletion lifecycle compared with a reviewed revision that fails to revoke refresh tokens and a corrected revision that closes the gap. An approved account-deletion lifecycle compared with a reviewed revision that fails to revoke refresh tokens and a corrected revision that closes the gap. The correction arrives with three other commits. A reviewer who already inspected the first revision should see the cumulative change from that checkpoint to the current head. [What Is a Revision Diff?](/learn/code-review/what-is-a-revision-diff) describes how that comparison avoids rereading unchanged work. ### 6. The team decides and preserves what remains true The identity, data, and API reviewers approve the current revision after checking the fix and refreshed evidence. After merge, the accepted lifecycle, retention rule, and recovery behavior update maintained product and technical documentation. [How to Keep Codebase Documentation Current When AI Agents Write Code](/learn/code-context/living-documentation-for-ai-agents) covers that final step. ## A practical review sequence Use these seven review actions: Read the issue, RFC, or approved plan first. Identify the behavior, non-goals, and constraints the code must preserve. Record both the approved context version and the code revision under review. If either changes materially, make that change visible. Ask for affected boundaries, entry points, validation, and uncertainty. Give reviewers a reading order based on risk and ownership. Follow consequential paths across state transitions, side effects, failures, and rollback. Inspect surrounding code where the diff depends on an invariant. Match artifacts to the current revision. Ask what each proves and what it leaves untested. Keep discussion attached to the relevant code or artifact. After new pushes, compare against each reviewer's last checkpoint rather than assuming the previous review still applies. Tie approval to the reviewed revision. Move accepted product and technical decisions into the documentation that the next person or agent will read. ## Divide review by ownership without losing context Reviewers do not need identical mental models. Each owner can inspect a different part of the change as long as every decision refers to the same request and revision. The product owner verifies the requested experience. Security examines credential and data boundaries. The service owner traces failure behavior. Together they check one revision against one approved request. GitHub pull request reviews already support named reviewers, line comments, suggestions, approvals, and requests for changes. GitHub also advises reviewers to understand a pull request's motivation and linked context before evaluating the diff. See [Reviewing proposed changes in a pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request). VS Code's preview [Artifacts panel](https://code.visualstudio.com/docs/chat/chat-artifacts) can surface plans, screenshots, documents, and agent-produced resources beside a conversation. Teams can use that panel while preserving the route from request to evidence to decision across their other review tools. ## Know the limits This workflow improves traceability, but it does not prove correctness. * An approved plan can contain a bad decision. * Reviewers can misunderstand unfamiliar code or accept weak evidence. * Tests demonstrate selected behavior, not every production condition. * Generated explanations and polished artifacts can be stale or wrong. * A small diff can carry large consequences, while a large mechanical diff may need less interpretation. * More process can consume attention without improving a routine, reversible change. Keep changes focused, assign review by consequence, preserve exact checkpoints where they matter, and make uncertainty visible. ## Frequently asked questions ### Is an AI-generated pull request summary enough for code review? No. It is useful orientation, but reviewers still need to compare the implementation with the requested behavior, inspect risky code paths, evaluate current evidence, and make a decision about an exact revision. ### How do you review AI-generated code you did not write? Start with the intended outcome and constraints. Use the agent's change map to find entry points, then trace state changes, side effects, failures, and validation through the actual code. Ask for evidence where runtime behavior is easier to inspect than infer. ### Are passing tests enough to trust AI-generated code? No. Passing tests show that selected assertions passed in a particular environment. Reviewers still need to judge whether the tests cover the approved behavior, whether important paths are missing, and whether the implementation preserves system constraints. ### Should every AI-generated change require a formal plan? No. A small, reversible change may need only a clear request, focused tests, and ordinary review. An approved plan becomes valuable when several people or agents need one decision, or when product, security, data, API, migration, or operational consequences are substantial. ### What if the generated change is too large to understand? Reduce or partition it before treating a summary as a substitute for review. Separate independent behavior, establish a safe reading order, and require evidence for each consequential slice. If reviewers cannot connect the code to the approved request, the change is not ready to ship. Compare the agent's handoff with the current local diff and return line-specific feedback. *Last reviewed July 18, 2026. Maintained by the Plannotator project.* # Review Pull Request Artifacts Beside the Code Source: https://docs.plannotator.ai/learn/code-review/review-pull-request-artifacts Plannotator gathers screenshots, GIFs, videos, HTML, and Markdown from GitHub pull requests and GitLab merge requests into one artifact gallery beside the code diff. Plannotator gathers supported screenshots, GIFs, videos, HTML files, and Markdown documents from a hosted GitHub pull request or GitLab merge request into one **Artifacts** gallery beside the code diff. The gallery preserves where each artifact appeared, who posted it, and when it entered the conversation. Reviewers can inspect the evidence without searching through the description, comments, review replies, and resolved threads.