Skip to content
Back to skills

Wiki

ASecurity

Dispatch three subcommands: ingest, query, or lint. 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}.md. TRIGGER when: ingest a URL, path, or draft; query the wiki before planning; or lint the index or review status.

  • 40 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 3, 2026
ai-agentsgobashgit

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned October 1, 2026

npx -y skills add mifunedev/openharness --skill wiki --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Wiki?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Wiki
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mifunedev-wiki/badge)](https://www.skillsdirectory.com/skills/mifunedev-wiki)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: wiki
description: |
  Dispatch three subcommands: ingest, query, or lint. 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}.md.
  TRIGGER when: ingest a URL, path, or draft; query the wiki before planning;
  or lint the index or review status.
argument-hint: "ingest <url|path> [--slug <override>] | ingest --from-draft <slug> [--allow-stale] | query <topic> [--patterns] | lint [--dry-run]"
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch
---

# Wiki

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 three
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

| Subcommand | Argument form | Purpose | Reference |
|------------|---------------|---------|-----------|
| `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 regeneration | `references/lint.md` |

## Dispatch

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

```bash
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):

| `$SUB` | Action |
|--------|--------|
| `ingest` | Read `references/ingest.md`; execute it with `$REST` as its argument string. |
| `query` | Read `references/query.md`; execute it with `$REST` as the `<topic>`. |
| `lint` | Read `references/lint.md`; execute it with `$REST` (only `--dry-run` is recognized). |
| 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 three 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 planning 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):
  ```bash
  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`;
  a build calls it with `--changed <paths>`. Nothing reimplements it.
- **Orchestrator-only write gate**: `ingest` writes (snapshots + entity pages),
  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, named for the mode not the run.
- A **proposal decision record** → `.agro/evals/decisions/skill-impact.md`, not a
  knowledge page.
- **Human-facing prose** → `docs/` (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` — 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

Files in this skill

  • SKILL.md6.9 KB
  • references/compile.md10.3 KB
  • references/concurrent-ingest-worktrees.md1.2 KB
  • references/github-repo-research-wiki.md2.7 KB
  • references/ingest.md38.9 KB
  • references/lint.md16.6 KB
  • references/official-docs-research-wiki.md2.1 KB
  • references/query.md11.5 KB
  • references/schema.md23.8 KB
  • references/social-image-wiki-ingest.md1.9 KB
  • scripts/knowledge-impact.sh5.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…