agentleFS
illegalstudioillegalstudio/elephc/.claude/skills/doc-update/SKILL.md

doc-update

Skill812 starsChanged 42 days agoMITView on GitHub

Audit and update the docs/ wiki to match the current codebase — checks all doc files against source code and fixes any mismatches.

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

20 rules. 0 are common, 9 are distinctive, and 11 are very specific to this project.

  • 0

    Common

    Most of the 8 edited versions we read keep these.

  • 9

    Distinctive

    This author's own choices. Worth a look.

  • 11

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Update the module map tree to match.

    line 36
  2. Very specific:

    If a new category directory exists (e.g., builtins/io/), add it to the tree.

    line 37
  3. Very specific:

    Check target and ABI descriptions against src/codegen/platform/ and src/codegen/abi/.

    line 38
  4. Very specific:

    Verify the src/ir_passes/ description covers both the EIR optimization pass driver (driver.rs, identity folding, …) and linear-scan …

    line 39
  5. Very specific:

    Check the runtime memory layout section against src/codegen/runtime/data.rs.

    line 40
  6. Very specific:

    Every type in PhpType must be documented in docs/php/types.md or the relevant extension page.

    line 46
  7. Very specific:

    Every builtin function in the canonical catalog (src/types/checker/builtins/catalog.rs) must appear in the relevant PHP or beyond-PHP page …

    line 47
  8. Very specific:

    Every StmtKind variant must be covered in docs/php/control-structures.md, docs/php/functions.md, docs/php/classes.md, …

    line 48
  9. Very specific:

    Every ExprKind variant must be covered somewhere in docs/php/ or docs/beyond-php/.

    line 49
  10. Very specific:

    Every variant in the Token enum should appear in the token tables.

    line 57
  11. Distinctive:

    All expression types should have codegen explanations (or at least be mentioned).

    line 82
  12. Very specific:

    Every runtime helper emitted by emit_runtime() should appear in the runtime docs.

    line 91
  13. Distinctive:

    If hash tables exist, their memory layout (header + entry structure) must be documented.

    line 102
  14. Distinctive:

    Keep user-facing flag examples in README.md consistent with this section.

    line 117
  15. Distinctive:

    All documentation is written in English.

    line 129
  16. Distinctive:

    Keep the existing structure and formatting style of each doc file.

    line 130
  17. Distinctive:

    When adding new sections, place them logically (e.g., hash tables near arrays, I/O after arrays).

    line 132
  18. Distinctive:

    Use tables for lists of items (routines, types, tokens).

    line 134
  19. Distinctive:

    After updating, verify no broken cross-references by checking that relative Markdown links point to existing files.

    line 135
  20. Distinctive:

    After updating, provide a summary of changes made:

    line 139

“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “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
SKILL.md

Documentation Update

You are a documentation maintainer for the elephc PHP-to-native compiler. Your job is to audit every file in docs/ against the actual codebase and fix any mismatches, missing features, or outdated information across the supported target matrix.

What to check

For each doc file, compare against the authoritative source files listed below. The codebase is always the source of truth — docs must reflect reality, not the other way around.

1. Current docs tree and Astro metadata

Source of truth: actual file listing in docs/

The current documentation tree is:

  • docs/README.md
  • docs/getting-started/
  • docs/how-to/
  • docs/compiling/ — the compiler CLI (flags, env vars) and the full compilation process
  • docs/php/
  • docs/beyond-php/
  • docs/internals/

Every .md file must have YAML frontmatter with title, description, and sidebar.order. The body must not add a top-level # title because Astro renders it from frontmatter. Do not add hand-written previous/next navigation links. When adding a new page, also add it to the docs/README.md index.

2. docs/internals/architecture.md — Module map & file counts

Source of truth: actual file listing in src/

  • Count files in each directory: src/codegen/builtins/{strings,arrays,math,types,io,system,pointers}/, src/codegen/runtime/, and runtime subdirectories including arrays, strings, io, system, exceptions, buffers, pointers, and fibers.
  • Update the module map tree to match. File counts in parentheses (e.g., (57 files)) must be accurate.
  • If a new category directory exists (e.g., builtins/io/), add it to the tree.
  • Check target and ABI descriptions against src/codegen/platform/ and src/codegen/abi/.
  • Verify the src/ir_passes/ description covers both the EIR optimization pass driver (driver.rs, identity folding, …) and linear-scan register allocation, not register allocation alone.
  • Check the runtime memory layout section against src/codegen/runtime/data.rs.

3. docs/php/*.md and docs/beyond-php/*.md — Supported features

Source of truth: src/types/model.rs (PhpType enum), src/types/signatures.rs, src/types/checker/builtins/catalog.rs (canonical builtin registry), src/codegen_ir/lower_inst/builtins/ (active EIR lowering), src/parser/ast.rs (ExprKind, StmtKind). The legacy src/codegen/builtins/ path is frozen — do not use it as the source of truth.

  • Every type in PhpType must be documented in docs/php/types.md or the relevant extension page.
  • Every builtin function in the canonical catalog (src/types/checker/builtins/catalog.rs) must appear in the relevant PHP or beyond-PHP page with correct signature.
  • Every StmtKind variant must be covered in docs/php/control-structures.md, docs/php/functions.md, docs/php/classes.md, docs/php/namespaces.md, or the relevant extension page.
  • Every ExprKind variant must be covered somewhere in docs/php/ or docs/beyond-php/.
  • "Not supported yet" notes must not refer to features that have been implemented.
  • The Limitations sections must be accurate.

4. docs/internals/the-lexer.md — Token types

Source of truth: src/lexer/token.rs

  • Every variant in the Token enum should appear in the token tables.
  • New keywords, operators, or structural tokens must be documented.

5. docs/internals/the-parser.md — AST nodes

Source of truth: src/parser/ast.rs, src/parser/expr/pratt.rs

  • The Expressions table must list every ExprKind variant.
  • The Statements table must list every StmtKind variant.
  • The BinOp enum must match the documented operators.
  • The Foreach struct fields must be accurate (check for key_var).
  • The Pratt parser binding power table should match src/parser/expr/pratt.rs infix_bp().

6. docs/internals/the-type-checker.md — Type system

Source of truth: src/types/model.rs, src/types/checker/, src/types/signatures.rs

  • The PhpType enum shown in the doc must match the actual enum exactly.
  • Type compatibility rules should match the logic in src/types/checker/mod.rs.
  • The Literals type table should cover all types including arrays and associative arrays.

7. docs/internals/the-codegen.md — Code generation

Source of truth: src/codegen/expr.rs, src/codegen/expr/, src/codegen/stmt.rs, src/codegen/stmt/, src/codegen/abi/, src/codegen/functions/

  • All expression types should have codegen explanations (or at least be mentioned).
  • Associative array codegen should be documented if ArrayLiteralAssoc exists in ast.rs.
  • Switch/match codegen should be documented if Switch/Match exist in ast.rs.
  • Target-specific ABI descriptions must match src/codegen/abi/.

8. docs/internals/the-runtime.md — Runtime routines

Source of truth: src/codegen/runtime/emitters.rs (the target-aware emit_runtime() entry point) and src/codegen/runtime/

  • Every runtime helper emitted by emit_runtime() should appear in the runtime docs.
  • Group by category: strings, arrays (core + hash table + manipulation), I/O, system, exceptions, buffers, pointers, fibers, GC/heap, objects/classes, iterables, and diagnostics where applicable.
  • Hash table routines (__rt_hash_*) must be documented.
  • I/O routines must have their own section.
  • The "How routines are emitted" section should mention all categories.

9. docs/internals/memory-model.md — Memory layout

Source of truth: src/codegen/runtime/data.rs, src/codegen/runtime/arrays/hash_new.rs, src/codegen/runtime/fibers/

  • The memory regions diagram must include all .comm buffers declared by src/codegen/runtime/data.rs.
  • If hash tables exist, their memory layout (header + entry structure) must be documented.
  • The memory limits table must include all buffers.

10. docs/internals/arm64-assembly.md and docs/internals/arm64-instructions.md

These rarely change. Only update if new instruction patterns are used in codegen (check for new ARM64 mnemonics in src/codegen/).

11. docs/compiling/*.md — Compiler CLI and the compilation process

Source of truth: src/cli.rs (flag parsing, defaults, env-var overrides), src/pipeline.rs (phase order and timing labels), src/codegen/platform/ (targets), src/ir_passes/ (EIR optimization passes), README.md (Usage section).

  • docs/compiling/cli-reference.md must document EVERY flag and environment variable parsed in src/cli.rs, with the correct accepted values and default. A new, renamed, or removed flag with no matching entry is a mismatch to fix.
  • docs/compiling/compilation-pipeline.md phase list and labels must match the timings.record_since("…") labels and ordering in src/pipeline.rs.
  • docs/compiling/targets.md must match the supported target matrix and accepted spellings in src/codegen/platform/.
  • docs/compiling/optimization.md must match the optimization controls: --ir-opt/--no-ir-opt (the EIR pass driver in src/ir_passes/), --regalloc, and --null-repr.
  • Keep user-facing flag examples in README.md consistent with this section.

How to update

  1. Read the source file to get the current truth.
  2. Read the doc file to see what it says.
  3. Diff mentally — find mismatches.
  4. Edit the doc file to match reality. Keep the existing style and tone.
  5. Do not remove content that is still accurate. Only add/update/fix.

Rules

  • All documentation is written in English.
  • Keep the existing structure and formatting style of each doc file.
  • File counts must be exact — count with ls dir/*.rs | wc -l.
  • When adding new sections, place them logically (e.g., hash tables near arrays, I/O after arrays).
  • Cross-links between docs (e.g., [The Runtime](the-runtime.md)) should be added when referencing another page.
  • Use tables for lists of items (routines, types, tokens). Use prose for explanations.
  • After updating, verify no broken cross-references by checking that relative Markdown links point to existing files. Ignore fenced code blocks and inline code spans when scanning links/headings.

Output

After updating, provide a summary of changes made:

## Documentation Update Summary

### Files updated
- `docs/internals/architecture.md` — updated file counts, added I/O section
- `docs/internals/the-runtime.md` — added 15 missing routines, added I/O section
- ...

### Files unchanged
- `docs/arm64-instructions.md` — already up to 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.