Wiki

SkillDocs & knowledge

Dispatch four subcommands: ingest, query, lint, or compile. Manage tracked knowledge; .agro/knowledge/ owns source pages, patterns, and raw snapshots; local scratch is excluded. Canonical schema: .agro/skills/wiki/references/schema.md. Procedures: references/{ingest,query,lint,compile}.md. TRIGGER when: ingest a URL, path, or draft; query the wiki before planning; lint the index or review status; or compile a retro lesson into a pattern.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Wiki skill

What this skill tells your AI

The instructions your AI receives, as published by mifunedev/agro in .agro/skills/wiki/SKILL.md and read by ahel’s review.

One parameterized skill over the harness knowledge base. The first token of $ARGUMENTS selects the operation; the remainder is that subcommand's argument string. This dispatcher holds the routing logic and the rules shared by all four operations; the full per-subcommand procedure lives in references/.

Two surfaces, one owner each. .agro/knowledge/ owns the data; this skill owns the procedure. No knowledge page lives under .agro/skills/wiki/, and no schema rule lives anywhere but references/schema.md.

Subcommands

SubcommandArgument formPurposeReference
ingest<url|path> [--slug <override>] · --from-draft <slug> [--allow-stale]Capture a source or promote a draft into an entity page (the only authorized write path)references/ingest.md
query<topic> [--patterns]Frontmatter OR-search over tracked knowledge; read the top matches into context (≤3 entity, ≤5 pattern)references/query.md
lint[--dry-run]Six correctness checks + atomic .agro/knowledge/README.md index regenerationreferences/lint.md
compile[--from <path>] [--task <slug>] [--dry-run]Consolidate a /retro report into kind: pattern entries (create or patch)references/compile.md

Dispatch

Parse $ARGUMENTS: the first whitespace-delimited token is the subcommand; the rest is the subcommand's argument string.

ARGUMENTS="${ARGUMENTS:-}"
SUB="${ARGUMENTS%% *}"          # first token
REST="${ARGUMENTS#"$SUB"}"      # everything after it
REST="${REST# }"               # trim one leading space

Route on $SUB, then follow the matching reference document end-to-end (its instructions are authoritative — this dispatcher does not restate them):

$SUBAction
ingestRead references/ingest.md; execute it with $REST as its argument string.
queryRead references/query.md; execute it with $REST as the <topic>.
lintRead references/lint.md; execute it with $REST (only --dry-run is recognized).
compileRead references/compile.md; execute it with $REST as its argument string.
anything else (incl. empty)Print the usage line from argument-hint and exit 0. Do not guess a subcommand.

Shared rules

These hold across all four subcommands; the reference docs assume them.

  • Knowledge root: entity pages at .agro/knowledge/source/<slug>.md, pattern pages at .agro/knowledge/patterns/pattern-<subsystem>-<mode>.md, immutable external snapshots at .agro/knowledge/raw/<yyyy-mm-dd>-<slug>.md. Both entry globs are flat and do not descend.
  • Tracked by default: source/, patterns/, and raw/ are committed like any other repository content — a plain git add, no -f, no whitelist. .agro/knowledge/local/ is the only ignored tier.
  • local/ is never an input: no query path and no /spec flow reads it. A page one machine can see must not inform a plan another machine cannot reproduce. Promotion goes through ingest.
  • The repository outranks the knowledge base: a page is orientation, not authority. Re-ground material claims against the sources a page cites before relying on them.
  • Canonical schema: frontmatter fields, the three kinds, provenance forms, freshness, slug derivation, the word cap, cross-links, the confidence lifecycle, and the body-merge strategy all live in .agro/skills/wiki/references/schema.md. The reference docs and this dispatcher defer to it — they never redefine it.
  • Frontmatter extraction (canonical, used identically by every consumer):
    awk '/^---$/{f=!f; next} f{print}' .agro/knowledge/source/<slug>.md
    
  • One freshness implementation: .agro/skills/wiki/scripts/knowledge-impact.sh decides dependency-aware invalidation. lint calls it with --verified; /spec execute calls it with --changed <paths>. Nothing reimplements it.
  • Orchestrator-only write gate: ingest writes (snapshots + entity pages), compile's pattern-page writes, and lint's index regeneration are orchestrator-only. Sub-agents propose drafts to $TMPDIR/oh-wiki-drafts/<slug>.md; the orchestrator promotes via /wiki ingest --from-draft <slug>. A sub-agent that writes directly to .agro/knowledge/ is out of scope and may be reverted.
  • Index reflects the tracked entry set: .agro/knowledge/README.md's Index table is generated state owned by lint, sorted by updated: descending. Never hand-edit it.

When NOT to use

  • A topic that is a behavioral norm ("always do X") → a rule/skill, not knowledge.
  • A session journal entry ("this run showed Y") → the run's report. A recurring failure mode the run revealed is different: that is a kind: pattern entry, written by compile, named for the mode not the run.
  • A proposal decision record.agro/evals/decisions/skill-impact.md, not a knowledge page.
  • Human-facing prosedocs/ (knowledge pages are LLM-readable synthesis).
  • Full-text body search → direct grep; query is intentionally frontmatter-only.

See Also

  • .agro/skills/wiki/references/schema.md — canonical schema and authoring rules
  • .agro/skills/wiki/references/ingest.md · query.md · lint.md · compile.md — full procedures
  • .agro/skills/wiki/scripts/knowledge-impact.sh — dependency-aware invalidation
  • .agro/knowledge/README.md — the generated index
  • .agro/evals/decisions/skill-impact.md — the skill-change ledger the proposer reads
  • .agro/evals/probes/wiki-readme-index.sh — drift guard for the generated index

Signals

GitHub stars
38
Forks
3
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
wiki-mifunedev
Source
github.com/mifunedev/agro