Agent docs writing
Skill event4u-app/agent-config/src/skills/agent-docs-writing
Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.From its SKILL.md
npx -y skills add event4u-app/agent-config --skill agent-docs-writingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
17.9 KB, ~4.3k tokens by cl100k_base, as published. Nobody here has run it
agent-docs
When to use
Use this skill when:
- Navigating the documentation structure to find relevant information
- Creating or updating agent documentation after changes
- Setting up documentation for a new module or package
- Understanding what documentation exists and where
Do NOT use when:
- Creating code or making technical changes (use coding skills)
- Looking for coding guidelines (use
guidelinesskill)
Documentation hierarchy
The documentation is organized in layers, from cross-project to module-specific:
Layer 1: .augment/ — Cross-project (identical in all repos)
.augment/
├── rules/ ← Always-active rules (coding, docker, scope, language, etc.)
├── commands/ ← Slash commands (fix-ci, create-pr, quality-fix, etc.)
├── skills/ ← Reusable skill definitions (coder, code-refactoring, etc.)
├── contexts/ ← Shared contexts about the agent system itself
├── templates/ ← Templates for features, roadmaps, contexts
└── guidelines/ ← Coding guidelines by language
└── php/ ← PHP guidelines (controllers, eloquent, patterns, etc.)
Purpose: Universal agent behavior that applies to ALL projects and packages.
Language: English.
Key rule: This directory is identical across repos. Never add project-specific content here.
Templates are the single source of truth for document structure — never store templates in agents/.
Layer 2: AGENTS.md — Project-level entry point
Located in the project root. Contains:
- Project description and tech stack
- Development setup (Docker, env files, Makefile targets)
- Testing conventions
- Quality tool configuration
- Links to
./agents/for detailed docs
Purpose: First file an agent reads. Provides the full project context.
Not every project has this — packages may only have ./agents/.
Layer 3: .github/copilot-instructions.md — Coding standards
Located in .github/. Contains:
- Architecture rules
- PHP coding standards
- Naming conventions
- ORM & database rules (Laravel example: Eloquent)
- API development rules
Purpose: Coding standards shared with GitHub Copilot and other AI tools. Not every project has this — check if it exists before referencing it.
Layer 4: agents/overrides/ — Project-level overrides
agents/overrides/
├── rules/ ← Override .augment/rules/*.md
├── skills/ ← Override .augment/skills/*/SKILL.md
├── commands/ ← Override .augment/commands/*.md
├── guidelines/ ← Override .augment/guidelines/**/*.md
└── templates/ ← Override .augment/templates/*.md
Purpose: Project-specific customizations of shared .augment/ resources (which are delivered as a package).
Mechanism: Each override file has a Mode header — extend (additive) or replace (full swap).
Key rule: Never modify .augment/ directly — always use overrides for project-specific needs.
See: .augment/contexts/override-system.md for naming conventions and format.
Layer 5: ./agents/ — Project-specific documentation
agents/
├── database-setup.md ← DB architecture, connections, tenancy
├── testing.md ← Test suites, conventions, seeders
├── dto.md ← DTO patterns and base classes
├── services-and-repos.md ← Service layer conventions
├── overrides/ ← Project-level overrides (see Layer 4)
├── features/ ← Feature plans (project-wide)
│ └── {feature-name}.md
├── roadmaps/ ← Multi-step change plans
│ └── {roadmap-name}.md
│ └── current.md
└── contexts/ ← Context documents (codebase area snapshots)
└── {context-name}.md
Purpose: Project-specific architecture, conventions, and domain knowledge.
Structure rule: Structural docs directly in agents/, features/roadmaps in subdirectories.
Templates live in .augment/templates/, NOT in agents/ subdirectories.
Layer 6: {module_root}/{Module}/{agent_folder}/ — Module-specific documentation
{module_root} comes from modules.root_paths and {agent_folder} from
modules.agent_folder in .agent-project-settings.yml. Discover via
scripts/_lib/agent_settings.ts::enumerate_modules(). Common shapes:
Laravel app/Modules/{Module}/agents/, Symfony src/Bundle/{Bundle}/agents/,
monorepo packages/{Pkg}/agents/.
{module_root}/{Module}/ ← e.g. app/Modules/ClientSoftware/
├── {agent_folder}/ ← e.g. agents/
│ ├── module-description.md
│ ├── features/ ← Module-scoped feature plans
│ │ └── {feature-name}.md
│ ├── roadmaps/ ← Module-scoped roadmaps
│ │ └── {roadmap-name}.md
│ └── contexts/ ← Module-scoped context documents
│ └── {context-name}.md
└── Docs/
└── technical-docs.md
Purpose: Documentation scoped to a specific module. When to create: When a module has its own conventions, complex domain logic, or active roadmaps.
Layer 7: Docs/ — Technical documentation
Docs/ ← Project-level technical docs
{module_root}/{Module}/Docs/ ← Module-level technical docs
Purpose: Technical documentation for humans (setup guides, architecture diagrams, API docs).
Difference from agents/: Docs/ is for human readers, agents/ is optimized for AI agents.
Layer 8: Package documentation
{package-root}/
├── agents/
│ ├── package-description.md
│ └── roadmaps/
└── AGENTS.md (optional)
Purpose: Same structure as projects, but for Composer packages.
Reading order
When starting work, read documentation in this order:
AGENTS.md(if it exists) — project overview.github/copilot-instructions.md(if it exists) — coding standardsagents/overrides/— check for project-level overrides of skills/rules/commands./agents/— project-specific docs relevant to the task{module_root}/{Module}/{agent_folder}/— if working on a module (resolved viamodules.root_paths+modules.agent_folder; Laravel:app/Modules/{Module}/agents/, Symfony:src/Bundle/{Bundle}/agents/, monorepo:packages/{Pkg}/agents/)agents/features/or module{agent_folder}/features/— if related feature plan existsagents/roadmaps/or module{agent_folder}/roadmaps/— if continuing existing work
Procedure: Create or update agent docs
- Identify trigger — What changed? (see table below)
- Locate target — Find the correct file in the documentation hierarchy.
- Update content — Edit or create the doc. English only in
.mdfiles. - Verify — Confirm the doc is consistent with surrounding files and cross-references are valid.
| Trigger | Action |
|---|---|
| New module created | Create {module_root}/{Module}/{agent_folder}/ with module description (Laravel example: app/Modules/{Module}/agents/) |
| Significant multi-step change | Ask user about creating a roadmap in agents/roadmaps/ |
| New convention introduced | Update relevant doc in ./agents/ or .augment/guidelines/ |
| Database schema changed | Update agents/reference/docs/database-setup.md |
| Architectural decision made | Use the adr-create skill — writes a numbered ADR under docs/adr/ (or docs/decisions/) and regenerates the index |
When to update documentation
After making changes, check if docs need updating:
- Roadmap step completed → mark
[x]in the roadmap file - Structural changes → update affected docs in
./agents/ - New patterns → update or create guideline docs
Doc-Impact — the mandatory check after every code change
This is the detection procedure the downstream-changes
§ Doc-Impact obligation points at. Run it after every code change — the
detection is non-optional; the human still confirms the actual edit.
Step 1 — did a public surface change? Framework-agnostic surface list:
| Public surface changed | Doc that describes it — update in the same change |
|---|---|
HTTP route / endpoint (Laravel routes/, Next.js app/api, FastAPI/Express handlers, Go mux) | OpenAPI / API reference, README usage, AGENTS.md API section |
| Exported function / class / method signature | The doc/example that calls it; agents/reference/docs/services-and-repos.md if referenced |
| CLI command or flag | README usage, AGENTS.md commands section, --help text |
| Config / settings key | Settings doc, README config section, schema/example file |
| Environment variable | .env.example, AGENTS.md environment section |
| DB schema / migration | agents/reference/docs/database-setup.md |
| Event payload / job constructor | The listener/consumer doc that documents the contract |
| New module | {module_root}/{Module}/{agent_folder}/ (resolve via modules.root_paths + modules.agent_folder) |
| New pattern / convention | Relevant guideline in .augment/guidelines/ |
| Architectural decision | adr-create — numbered ADR + index regen |
Step 2 — apply the fire/no-fire test. Drift is a falsifiable-claim contradiction, not incompleteness:
- FIRE (doc is now wrong — a reader would be misled): endpoint no longer exists, wrong return type, renamed key, removed flag, broken code example.
- DO NOT FIRE (completeness / quality only): the doc is high-level and omits a new internal detail it never claimed to list; "could be clearer".
Step 3 — escape hatch. Refactor-only / no public-surface change → no doc obligation. Surface changed but genuinely needs no doc edit → state the one-line reason; never edit a doc just to satisfy the rule (false-positive fatigue is worse than a missed nit).
When a doc edit IS needed but you are unsure of the wording — flag it with numbered options; do NOT auto-rewrite prose without the user's knowledge:
> 1. Yes — update the docs
> 2. No — leave as-is (reason: …)
Rules
- All
.mdfiles must be in English. - Do NOT create docs unless there's a real need.
- Do NOT duplicate content that's already in
AGENTS.mdor.github/copilot-instructions.md. - Do NOT write docs just to document what you did — only document things others need to know.
- If unsure whether a doc needs updating, ask the user.
- Sibling-routing sentences are edited as a set, never alone. When a skill's
description:carries a routing clause naming an overlapping sibling (Animated → pixar-storyteller), editing it obliges re-reading every sibling it names and every sibling that names it, so no user phrase ends up routed to two skills and none ends up routed to neither. One-sided edits are how a cluster's descriptions drift back into ambiguity between sweeps;lint_skill_descriptionscatches a missing clause, not an inconsistent one.
Output format
- Created or updated documentation file(s) in the correct location
- Summary of what changed and why
Gotcha
- Don't create documentation files unless explicitly requested — the scope-control rule overrides this skill.
- Always check if a doc already exists before creating a new one — duplicates are worse than gaps.
- AGENTS.md and copilot-instructions.md have different audiences — don't copy content between them.
- Module docs go in
{module_root}/{Module}/{agent_folder}/(permodules.root_paths), NOT in the centralagents/directory.
Frugality Standards
Apply the Frugality Charter to every agent-doc update you author.
Examples in this artifact:
- Per the charter's default-terse rule, doc updates state what changed; no "In this section we will…" frames.
- Per the cheap-question check, AGENTS.md surface offers options only where the project genuinely diverges.
- Per the post-action summary suppression, doc edits append change notes to the existing log entry; no new "Summary of changes" block.
Pre-save self-check:
- Does the doc open with a narrative intro instead of the actual content?
- Are paragraphs added that summarize an existing table?
- Does the doc duplicate the rule index instead of linking the relevant rule?
- Is German prose present outside
DE: / EN:anchor blocks?
User inbox workflow (agents/tmp/)
When a command or skill consumes a file from agents/tmp/ as its INPUT
(roadmap created from it, note promoted to knowledge, etc.), move the source
file to agents/tmp.old/<original-name> in the same reply as the output.
mv agents/tmp/<filename> agents/tmp.old/<filename>
- Move only files that were explicitly named as input to the command.
- Never sweep or auto-move other files in
agents/tmp/. - No confirmation needed —
tmp/andtmp.old/are gitignored, local-only. - Never write agent-generated scratch into
agents/tmp/— useagents/runtime/tmp/.
See docs/contracts/agents-layout.md § User Inbox Workflow.
Transient-reference discipline — mechanics (migrated from the no-roadmap-references rule)
Body of no-roadmap-references
(per P4 of road-to-kernel-and-router.md). The Iron Law — never link a
specific agents/roadmaps/ or agents/runtime/council/ file from a stable
artifact — stays in the rule; the pattern catalog lives here.
Forbidden patterns
These paths must not appear inside a stable artifact:
agents/roadmaps/<file>.md,agents/roadmaps/archive/<file>.md,agents/roadmaps/skipped/<file>.mdagents/runtime/council/questions/<file>.md,agents/runtime/council/responses/<file>.json,agents/runtime/council/sessions/<file>.jsonor<timestamp>/...
Stable artifact = any file under src/{rules,skills,domains}/,
src/agent-src/{contexts,templates,personas}/, agents/settings/contexts/,
docs/guidelines/, docs/contracts/, docs/architecture.md,
docs/customization.md, docs/getting-started.md, docs/catalog.md,
AGENTS.md, README.md, copilot-instructions.md.
CI enforcement: scripts/check_no_roadmap_refs.ts (roadmap layer)
and scripts/check_council_references.ts (council layer) — both
fail the build on any new violation.
Allowed patterns
agents/roadmaps/andagents/runtime/council/subdirs as directory mentions (talking about the layer, not a specific file)- Roadmap → roadmap references (siblings within the transient layer)
- The
ai-councilskill and/council:*commands documenting the output path schema - Inline council convergence summary — e.g. "Council (claude-sonnet-4-5 + gpt-4o, 2026-05-06) converged on …" with date + members, no filepath
- Council sessions,
agents/runtime/.agent-chat-history, commit messages, PR descriptions — transient by construction, not part of the package surface
Structural carve-outs (immutable inputs / decision provenance)
Two source/target shapes are exempt from the council-link ban
because the target is immutable input or decision provenance,
not transient drafting state. The linter implements these directly
(STRUCTURAL_CARVEOUTS in scripts/check_council_references.ts);
they do not need an inline <!-- council-ref-allowed: ... -->
pragma.
| Source | Target | Why |
|---|---|---|
agents/settings/contexts/evaluation-*.md | agents/runtime/council/questions/<question>.md | Question file is a frozen function-parameter / spend-gate input, not documentation. |
docs/contracts/*.md | agents/runtime/council/sessions/<ts>/synthesis.md | Synthesis is the audit-trail receipt; contract inlines the decision body itself. |
Driven by the 2026-05-14 P3.4 council round (claude-sonnet-4-5 + gpt-4o, converged on rule refactor over escape-hatch overuse). Any other source/target combination still needs an inline pragma or inline-summary rewrite.
What to do instead
When a stable artifact needs to cite a transient finding:
- Identify the durable conclusion — decision, contract, lesson, mechanic.
- Promote it to a context file under
agents/settings/contexts/(ADR, mechanics doc, locked decision). The roadmap or council session can then point at the context, not the other way around. - Reference the context from the stable artifact.
- For council convergences specifically: inline a convergence-summary
block (members, date, cost if relevant — see
ai-council§ Output format) instead of linking the session JSON.
Failure modes:
- "I'll just link to the roadmap, it's evidence." The roadmap gets archived, then deleted, then the link rots. Promote first, link second.
- "I'll just link to the session JSON, it's evidence." The session is gone in 7 days. Inline first, link never.
Do NOT
- Do NOT create docs unless there's a real need (new module, significant change).
- Do NOT duplicate information already in AGENTS.md or copilot-instructions.md.
- Do NOT write docs just to document what you did — only document things others need to know.
- Do NOT write agent-generated scratch into
agents/tmp/— that is the user's inbox. - Regen-only outputs (
agents/evidence/analysis/*,agents/reports/*generated by a script): commit only together with the work that consumed them. A session that regenerates as a side-effect discards withgit checkout --before ending. Seedocs/contracts/agents-layout.md § Session-leftover discipline.
Auto-trigger keywords
- agent documentation
- docs structure
- when to read docs
- documentation maintenance
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most docs writing skills give in ~4.3k tokens
Counted across 1,637 of the 3,044 authors here whose files we hold, read 2026-08-07
- Announce the skill at startin 54 of 1637, across 26 files
- Convert legacy doc files before editingin 45 of 1637, across 7 files
- Predict questions readers might askin 42 of 1637, across 4 files
- Generate clarifying questions for initial contextin 42 of 1637, across 3 files
- Create document scaffold with placeholder textin 42 of 1637, across 3 files
- Brainstorm content options for each sectionin 42 of 1637, across 3 files
- Test the document with a fresh context-less instancein 42 of 1637, across 3 files
- Include exact file paths in every taskin 42 of 1637, across 15 files
- Ask interview questions one at a timein 42 of 1637, across 27 files
- Apply surgical edits during refinementin 41 of 1637, across 2 files
- Offer structured workflow or freeformin 40 of 1637, across 1 file
- Ask for document meta-contextin 40 of 1637, across 2 files
Said here and by no other author read
- update affected documentation after every code change
- run doc-impact detection after every code change
- mark completed steps in roadmap files
- use override files for project-specific customizations
- ask the user if unsure documentation needs updating
- apply frugality charter standards to updates
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.