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
  • 3 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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.