agentleFS
obviousbreadobviousbread/docs-skills/AGENTS.md

docs-skills

AGENTS.md0 starsChanged 15 days agoMITView on GitHub

Portable agent skills for official .docx document generation. Drop-in operating instructions for coding agents. Read this file before every task. Working code only. Finish the job. Plausibility is not correctness. This file follows the AGENTS.md open standard (Linux Foundation / Agentic AI Foundation). Claude Code, Codex, Cursor, Windsurf, Copilot, Aider, Devin, Amp read it natively. In this repo CLAUDE.md and GEMINI.md use the @AGENTS.md import directive so a single source of truth applies across harnesses. These rules override everything else…

  • Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.

    Of the AGENTS.md files we read, the 31,843 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

  • In this repository10 other files it gives its agents.

The file

Show its rules and text

We split this AGENTS.md into the rules it gives an agent

44 rules. About 0 are common, 36 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈36

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Disagree when you disagree: If the user's premise is wrong, say so before doing the work.

    line 18
  2. Distinctive:

    Never fabricate: Not file paths, not commit hashes, not API names, not test results, not library functions.

    line 19
  3. Distinctive:

    Stop when confused: If the task has two plausible interpretations, ask.

    line 20
  4. Distinctive:

    Touch only what you must: Every changed line must trace directly to the user's request.

    line 21
  5. Distinctive:

    Read the files you will touch.

    line 30
  6. Distinctive:

    If two approaches exist, present both with tradeoffs.

    line 33
  7. Distinctive:

    No features beyond what was asked.

    line 41
  8. Distinctive:

    No abstractions for single-use code.

    line 42
  9. Distinctive:

    No error handling for impossible scenarios.

    line 43
  10. Distinctive:

    If the solution runs 200 lines and could be 50, rewrite it before showing it.

    line 44
  11. Distinctive:

    If you find yourself adding "for future extensibility", stop.

    line 45
  12. Distinctive:

    Do not "improve" adjacent code, comments, formatting, or imports that are not part of the task.

    line 56
  13. Distinctive:

    Do not refactor code that works just because you are in the file.

    line 57
  14. Distinctive:

    Do not delete pre-existing dead code unless asked.

    line 58
  15. Distinctive:

    Do clean up orphans created by your own changes (unused imports, variables, functions your edit made obsolete).

    line 59
  16. Distinctive:

    Write the verification (test, script, benchmark, screenshot diff) where practical.

    line 80
  17. Distinctive:

    Run the verification. Read the output.

    line 81
  18. Distinctive:

    If the verification fails, fix the cause, not the test.

    line 82
  19. Distinctive:

    Prefer running the code to guessing about the code.

    line 88
  20. Distinctive:

    Never report "done" based on a plausible-looking diff alone.

    line 89
  21. Distinctive:

    When debugging, address root causes, not symptoms.

    line 90
  22. Distinctive:

    Use CLI tools (gh, aws, gcloud, kubectl) when they exist.

    line 92
  23. Distinctive:

    When reading logs, errors, or stack traces, read the whole thing.

    line 93
  24. Distinctive:

    After two failed corrections on the same issue, stop.

    line 100
  25. Distinctive:

    Use subagents (Claude Code: "use subagents to investigate X") for exploration tasks that would otherwise pollute the main context with …

    line 101
  26. Distinctive:

    When committing, write descriptive commit messages (subject under 72 chars, body explains the why).

    line 102
  27. Distinctive:

    When a question has a clear answer, give it.

    line 110
  28. Distinctive:

    No excessive bullet points, no unprompted headers, no emoji.

    line 112
  29. Distinctive:

    After every session where the agent did something wrong:

    line 135
  30. Distinctive:

    Ask: was the mistake because this file lacks a rule, or because the agent ignored a rule?

    line 137
  31. Distinctive:

    If lacking: add the rule under "Project Learnings" below, written as concretely as possible ("Always use X for Y" not "be careful with Y").

    line 138
  32. Distinctive:

    If ignored: the rule may be too long, too vague, or buried.

    line 139
  33. Distinctive:

    Every few weeks, prune. For each line, ask: "Would removing this cause the agent to make a mistake?" If no, delete.

    line 140
  34. Distinctive:

    Prefer single-file or single-test runs during iteration.

    line 166
  35. Very specific:

    Skill sync: when modifying generate.py in any document-generation skill, update its SKILL.md and references/maintenance.md if present.

    line 170
  36. Very specific:

    Every installable directory contains its own SKILL.md and all runtime assets it references.

    line 179
  37. Distinctive:

    Commit atomically: one logical change per commit, each with a short imperative summary.

    line 186
  38. Very specific:

    Keep CHANGELOG.md in Keep a Changelog 1.1.0 style.

    line 188
  39. Very specific:

    Run python3 -m pytest tests and npx skills add .

    line 195
  40. Very specific:

    Do not commit ~/.docs-plugin/ (persistent user configuration and scripts).

    line 200
  41. Very specific:

    Do not commit output .docx files.

    line 201
  42. Very specific:

    Keep each skill independently installable through Vercel Skills.

    line 213
  43. Very specific:

    When promoting a locally installed skill into docs-skills, implement and release it from ~/GitHub/docs-skills.

    line 216
  44. Distinctive:

    Before proposing a release number or distribution workflow, inspect the current tags and this repository's README/AGENTS.

    line 217

≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
AGENTS.md

AGENTS.md

Portable agent skills for official .docx document generation.

Drop-in operating instructions for coding agents. Read this file before every task.

Working code only. Finish the job. Plausibility is not correctness.

This file follows the AGENTS.md open standard (Linux Foundation / Agentic AI Foundation). Claude Code, Codex, Cursor, Windsurf, Copilot, Aider, Devin, Amp read it natively. In this repo CLAUDE.md and GEMINI.md use the @AGENTS.md import directive so a single source of truth applies across harnesses.


0. Non-negotiables

These rules override everything else in this file when in conflict:

  1. No flattery, no filler. Skip openers like "Great question", "You're absolutely right", "Excellent idea", "I'd be happy to". Start with the answer or the action.
  2. Disagree when you disagree. If the user's premise is wrong, say so before doing the work. Agreeing with false premises to be polite is the single worst failure mode in coding agents.
  3. Never fabricate. Not file paths, not commit hashes, not API names, not test results, not library functions. If you don't know, read the file, run the command, or say "I don't know, let me check."
  4. Stop when confused. If the task has two plausible interpretations, ask. Do not pick silently and proceed.
  5. Touch only what you must. Every changed line must trace directly to the user's request. No drive-by refactors, reformatting, or "while I was in there" cleanups.

1. Before writing code

Goal: understand the problem and the codebase before producing a diff.

  • State your plan in one or two sentences before editing. For anything non-trivial, produce a numbered list of steps with a verification check for each.
  • Read the files you will touch. Read the files that call the files you will touch. Claude Code: use subagents for exploration so the main context stays clean.
  • Match existing patterns in the codebase. If the project uses pattern X, use pattern X, even if you'd do it differently in a greenfield repo.
  • Surface assumptions out loud: "I'm assuming you want X, Y, Z. If that's wrong, say so." Do not bury assumptions inside the implementation.
  • If two approaches exist, present both with tradeoffs. Do not pick one silently. Exception: trivial tasks (typo, rename, log line) where the diff fits in one sentence.

2. Writing code: simplicity first

Goal: the minimum code that solves the stated problem. Nothing speculative.

  • No features beyond what was asked.
  • No abstractions for single-use code. No configurability, flexibility, or hooks that were not requested.
  • No error handling for impossible scenarios. Handle the failures that can actually happen.
  • If the solution runs 200 lines and could be 50, rewrite it before showing it.
  • If you find yourself adding "for future extensibility", stop. Future extensibility is a future decision.
  • Bias toward deleting code over adding code. Shipping less is almost always better.

The test: would a senior engineer reading the diff call this overcomplicated? If yes, simplify.


3. Surgical changes

Goal: clean, reviewable diffs. Change only what the request requires.

  • Do not "improve" adjacent code, comments, formatting, or imports that are not part of the task.
  • Do not refactor code that works just because you are in the file.
  • Do not delete pre-existing dead code unless asked. If you notice it, mention it in the summary.
  • Do clean up orphans created by your own changes (unused imports, variables, functions your edit made obsolete).
  • Match the project's existing style exactly: indentation, quotes, naming, file layout.

The test: every changed line traces directly to the user's request. If a line fails that test, revert it.


4. Goal-driven execution

Goal: define success as something you can verify, then loop until verified.

Rewrite vague asks into verifiable goals before starting:

  • "Add validation" becomes "Write tests for invalid inputs (empty, malformed, oversized), then make them pass."
  • "Fix the bug" becomes "Write a failing test that reproduces the reported symptom, then make it pass."
  • "Refactor X" becomes "Ensure the existing test suite passes before and after, and no public API changes."
  • "Make it faster" becomes "Benchmark the current hot path, identify the bottleneck with profiling, change it, show the benchmark is faster."

For every task:

  1. State the success criteria before writing code.
  2. Write the verification (test, script, benchmark, screenshot diff) where practical.
  3. Run the verification. Read the output. Do not claim success without checking.
  4. If the verification fails, fix the cause, not the test.

5. Tool use and verification

  • Prefer running the code to guessing about the code. If a test suite exists, run it. If a linter exists, run it. If a type checker exists, run it.
  • Never report "done" based on a plausible-looking diff alone. Plausibility is not correctness.
  • When debugging, address root causes, not symptoms. Suppressing the error is not fixing the error.
  • For UI changes, verify visually: screenshot before, screenshot after, describe the diff.
  • Use CLI tools (gh, aws, gcloud, kubectl) when they exist. They are more context-efficient than reading docs or hitting APIs unauthenticated.
  • When reading logs, errors, or stack traces, read the whole thing. Half-read traces produce wrong fixes.

6. Session hygiene

  • Context is the constraint. Long sessions with accumulated failed attempts perform worse than fresh sessions with a better prompt.
  • After two failed corrections on the same issue, stop. Summarize what you learned and ask the user to reset the session with a sharper prompt.
  • Use subagents (Claude Code: "use subagents to investigate X") for exploration tasks that would otherwise pollute the main context with dozens of file reads.
  • When committing, write descriptive commit messages (subject under 72 chars, body explains the why). No "update file" or "fix bug" commits. No "Co-Authored-By: Claude" attribution unless the project explicitly wants it.

7. Communication style

  • Direct, not diplomatic. "This won't scale because X" beats "That's an interesting approach, but have you considered...".
  • Concise by default. Two or three short paragraphs unless the user asks for depth. No padding, no restating the question, no ceremonial closings.
  • When a question has a clear answer, give it. When it does not, say so and give your best read on the tradeoffs.
  • Celebrate only what matters: shipping, solving genuinely hard problems, metrics that moved. Not feature ideas, not scope creep, not "wouldn't it be cool if".
  • No excessive bullet points, no unprompted headers, no emoji. Prose is usually clearer than structure for short answers.

8. When to ask, when to proceed

Ask before proceeding when:

  • The request has two plausible interpretations and the choice materially affects the output.
  • The change touches something you've been told is load-bearing, versioned, or has a migration path.
  • You need a credential, a secret, or a production resource you don't have access to.
  • The user's stated goal and the literal request appear to conflict.

Proceed without asking when:

  • The task is trivial and reversible (typo, rename a local variable, add a log line).
  • The ambiguity can be resolved by reading the code or running a command.
  • The user has already answered the question once in this session.

9. Self-improvement loop

This file is living. Keep it short by keeping it honest.

After every session where the agent did something wrong:

  1. Ask: was the mistake because this file lacks a rule, or because the agent ignored a rule?
  2. If lacking: add the rule under "Project Learnings" below, written as concretely as possible ("Always use X for Y" not "be careful with Y").
  3. If ignored: the rule may be too long, too vague, or buried. Tighten it or move it up.
  4. Every few weeks, prune. For each line, ask: "Would removing this cause the agent to make a mistake?" If no, delete. Bloated AGENTS.md files get ignored wholesale.

Boris Cherny (creator of Claude Code) keeps his team's file around 100 lines. Under 300 is a good ceiling. Over 500 and you are fighting your own config.


10. Project context

Stack

  • Python 3 for skill generators. Dependencies: python-docx, openpyxl. No project virtualenv is assumed.
  • Distribution uses the Vercel skills CLI. There is no custom installer or shared runtime.
  • Target platforms: macOS and Linux. User configuration lives in ~/.docs-plugin/.

Layout

  • skills/docs-*/ – self-contained portable agent skills discovered and installed independently.
  • tests/ – Python tests (pytest).
  • ~/.docs-plugin/org_details.md – persistent organization settings and optional knowledge_base_path. Never committed.

Commands

  • Tests: python3 -m pytest tests
  • Discovery check: npx skills add . --list
  • End-user install: npx skills add obviousbread/docs-skills

Prefer single-file or single-test runs during iteration. Full suites are for the final verification pass.

Conventions specific to this repo

  • Skill sync: when modifying generate.py in any document-generation skill, update its SKILL.md and references/maintenance.md if present. Divergence breaks agent behavior.
  • Self-contained skills: a skill must not depend on sibling skills, repository-root runtime files, or ~/.docs-plugin/runtime.
  • User context: organization facts stay in org_details.md; reusable wording and source context come only from knowledge_base_path.

Runtime Shape

Architectural invariants. Violating any of these breaks distribution.

  • The Vercel skills CLI is the only supported distribution path.
  • Every installable directory contains its own SKILL.md and all runtime assets it references.
  • Harness paths and project/global scope are selected by the CLI, not maintained by this repository.

Versioning & Git

  • main is stable and always releasable. Do feature work on topic branches: feat/<short-name>, fix/<short-name>, refactor/<short-name>, chore/<short-name>, docs/<short-name>.
  • Solo no-ff workflow: branch → implement → verify → git merge --no-ff into main → delete the topic branch. --no-ff is mandatory so each feature stays one visible unit in history.
  • Commit atomically: one logical change per commit, each with a short imperative summary. Typical feature work is 3–10 atomic commits; split larger work into multiple branches.
  • Conventional Commits, English, lowercase imperative: type(scope): summary. Types: feat, fix, refactor, style, docs, chore, test. Scope required except for chore and docs.
  • Keep CHANGELOG.md in Keep a Changelog 1.1.0 style.
  • Never merge a topic branch, push, or publish without explicit user confirmation.

Releases

  1. Personal-data gate (blocking). Before any release commit, tag, or publish, scan the working tree and the staged diff for personal or identifying data (real names, organization names, addresses, contact details, requisites, anything tracing to the author or their workplace). If anything is found, stop and depersonalize first. A commit, release, or publish must not proceed while identifying data is present anywhere in the tracked content.
  2. Update CHANGELOG.md.
  3. Run python3 -m pytest tests and npx skills add . --list.
  4. Show the release contents and wait for explicit user confirmation before committing, tagging, pushing, or creating a release.

Forbidden

  • Do not commit ~/.docs-plugin/ (persistent user configuration and scripts).
  • Do not commit output .docx files.
  • No real identifying data in committed content. Everything that ships (skills, references, examples, tests, fixtures, sample documents, docstrings, changelog) must use only generic, clearly fictional placeholders. Never name a real organization, person, address, contact detail, or institutional requisite — including the author's own employer or anything that could identify the author. Real values live only in ~/.docs-plugin/ and are read at runtime; if a value is absent, use a depersonalized default.

11. Project Learnings

Accumulated corrections. This section is for the agent to maintain, not just the human.

When the user corrects your approach, append a one-line rule here before ending the session. Write it concretely ("Always use X for Y"), never abstractly ("be careful with Y"). If an existing line already covers the correction, tighten it instead of adding a new one. Remove lines when the underlying issue goes away (model upgrades, refactors, process changes).

  • Keep the runtime depersonalized: never hardcode personal/org data (ФИО, document author, org requisites, track-changes revision author) in a skill or runtime. Read all such values from the ~/.docs-plugin/org_details.md config; if a value is absent, use a depersonalized default. Before every commit and release, run the personal-data gate (see Releases step 0) and block on any real identifying data. New config key for review mode: revision_author (author shown on tracked revisions).
  • Keep each skill independently installable through Vercel Skills; do not add shared runtime dependencies or a second user-context store beside knowledge_base_path.
  • In proofreading, expose existing soft hyphens before treating visually joined words as missing-space errors; record every edit with tracked changes, but comment only on ambiguous or non-obvious corrections.
  • In proofreading output, never use — or Ё/ё; prefer – or - by context, format personal initials without spaces (В.И. Фамилия), and keep compact abbreviations such as в т.ч. free of internal spaces.
  • When promoting a locally installed skill into docs-skills, implement and release it from ~/GitHub/docs-skills; treat installed copies only as source material, never as the release target.
  • Before proposing a release number or distribution workflow, inspect the current tags and this repository's README/AGENTS; do not rely on cached release information.
  • In staff-list normalization, retain richer source columns and their values, flatten the header into one row, and use the source list date rather than the processing date.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.