From literate-agent
Prose drives code in any literate-programming repo. Use BEFORE editing any .org file in a project that follows literate-programming discipline. Auto-activates when the user asks for a feature, change, refactor, or fix in .org files, and when they say "explain", "document", "draft a section", "write up", "rationale".
How this skill is triggered — by the user, by Claude, or both
Slash command
/literate-agent:docs-firstWhen to use
editing literate .org files; adding a new defun, defcustom, class, or method; refactoring an existing section; user says "add", "write", "implement", "refactor", "explain why", "document".
**/*.orgThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This repo's .org files ARE the source. Code is woven into prose, not
This repo's .org files ARE the source. Code is woven into prose, not the other way around. Write the why first; the code is evidence that backs up the explanation.
Claude's default reflex on "add feature X" is to find a src block, edit it, and append a docstring or comment. That is wrong here.
The correct order is:
#+BEGIN_SRC body beneath it.(literate-elisp-load "FILE.org") for Elisp,
make tangle-python for Python).For every changed or added section, the surrounding prose must let a reader who cannot run the code understand:
If you cannot answer "why this shape", stop. The change is not ready to write.
After every paragraph you write, ask: "if I delete this paragraph, does the reader's understanding degrade?" If no — delete it.
Common failures:
The rule lives at ~/projects/literate-agent/rules/lp-prose-no-self-narration.md
— consult it when in doubt.
State the bypass explicitly before skipping prose:
Anything else — including 1-line behaviour fixes — gets at least one sentence of prose explaining the trap that the fix closes.
When adding a new section, write all four parts in this order:
,** <Concept Name> ← name a concept, not "Functions"
:PROPERTIES:
:CUSTOM_ID: <kebab-case-anchor> ← stable cross-file link target
:END:
<1–3 sentence prose preamble explaining the *why*,
naming any rejected alternative, quoting a trap if relevant>
,#+BEGIN_SRC elisp
(defun ...)
,#+END_SRC
If the file has a * Overview section, EVERY new top-level section
gets a one-line entry in that overview's concerns table.
When the prose references another module, use a real org link, not plain text:
See [[file:other-module.org::#overview][other module]] for ...
Plain-text references degrade to grep targets. Real links make Emacs jump-to-definition work and let GitHub render them as clickable.
Before saying "feature added":
make test-smoke or
equivalent — < 2 s).make test-unit,
pytest, etc.)..py from a Python .org),
run the tangle target before tests.If you are a new contributor reading this skill cold: open any
existing .org module in the project and look at its first three
sections. The pattern is typically:
* Overview with :CUSTOM_ID: overview** Dependencies with a tiny #+BEGIN_SRC ... (require ...)
blockThat is the target shape — copy it for new modules.
npx claudepluginhub jingtaozf/literate-agent --plugin literate-agentProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.