/wiki — per-client-folder hygiene and drift detection

SkillDocs & knowledge

'Per-client-folder hygiene and semantic drift detection. Runs structured checks inside a single client engagement

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 — per-client-folder hygiene and drift detection skill

What this skill tells your AI

The instructions your AI receives, as published by matteotitta/genesys-skills in skills/meta/learning/wiki/SKILL.md and read by ahel’s review.

Runs inside a single client engagement folder. Catches semantic drift, stale references, and structural gaps before they contaminate a deliverable.

/audit covers the whole workspace. /workspace-cleanup covers file-system hygiene globally. /wiki covers content consistency inside one client folder — which neither of the other two can do.


Triggers

Invoke when user says:

  • /wiki (run lint against the current client folder, auto-detected from cwd)
  • /wiki lint {client-slug} — run lint against a specific active client
  • /wiki status — show which clients are missing hot.md / log.md
  • /wiki status {client-slug} — show hot.md + last 10 log.md entries for a client
  • "lint this client folder"
  • "check this engagement for drift"
  • "what's stale in {client}?"

Do NOT invoke when:

  • User wants to clean up the global workspace (use /workspace-cleanup)
  • User wants a full workspace health audit (use /audit)
  • User wants to absorb new source material (use /learn)
  • User wants to run structured research (use /company-context, /competitor-research, etc.)

Subcommands

CommandAction
/wikiLint the current client folder (auto-detect from cwd)
/wiki lint {client-slug}Lint a specific active client
/wiki statusShow which clients have complete operations layer (CLAUDE.md + hot.md + log.md)
/wiki status {client-slug}Show the current hot.md + recent log.md for one client
/wiki history {client-slug}Parse log.md and show the full operation timeline

Parse $ARGUMENTS to route. Default (no args) = lint current folder.


Subcommand: status (no client)

Walk projects/consulting/active/*/ and report which clients have the full operations layer:

ClientCLAUDE.mdhot.mdlog.mdLast log entry
ClientCo2026-04-11 init
ClientCo2026-04-11 init

Flag any client missing hot.md or log.md. Suggest creating them per the shared template in projects/consulting/CLAUDE.md.


Subcommand: status {client-slug}

  1. Read projects/consulting/active/{client-slug}/hot.md — display verbatim
  2. Read projects/consulting/active/{client-slug}/log.md — display last 10 entries
  3. If either is missing, say so and offer to create it

Subcommand: history {client-slug}

  1. Read projects/consulting/active/{client-slug}/log.md in full
  2. Parse ## [YYYY-MM-DD] {operation} | {subject} entries
  3. Present as a chronological table grouped by operation type:
    • lock events (canonical deliverables)
    • review events (gate outcomes)
    • ingest events (source material absorbed)
    • decision events (direction changes)
  4. Highlight the most recent lock for each major deliverable type (positioning, messaging, ICP, competitors)

Default command: lint {client}

Phase 1: Resolve the target client

  1. If a client slug was passed, use projects/consulting/active/{slug}/
  2. Else, check cwd — if inside an active client folder, use that one
  3. Else, ask the user which client to lint (via AskUserQuestion)

Confirm the target path before running any checks.

Phase 2: Load the operations layer

Read, in this order:

  1. {client}/CLAUDE.md
  2. {client}/hot.md (if present)
  3. {client}/log.md (if present)

If hot.md or log.md are missing, flag as a structural gap and continue — don't block.

Phase 3: Catalogue the canonical files

From CLAUDE.md, extract every explicitly referenced file path (positioning, messaging, ICP, competitors, brand, pricing, etc.). These are the "canonical" files — the current source of truth for each deliverable type.

Then walk the client folder and list every .md file. Classify each as:

  • Canonical — referenced in CLAUDE.md
  • Superseded — earlier dated version of a canonical file (e.g., 0226-positioning-v4.md when 0326-positioning-v5.md is canonical)
  • Orphan — not referenced anywhere in CLAUDE.md, hot.md, or log.md, and not a superseded canonical
  • Support — notes, docs, raw transcripts (under notes/, docs/) — not subject to drift checks

Phase 4: Run the five drift checks

Check 1: Contradictions between canonical files

For each pair of canonical files that cover overlapping topics (positioning + messaging, messaging + sales enablement, ICP + competitors), compare the core claims:

  • Product naming (e.g., "Atlas platform" vs. "Atlas product family")
  • Key differentiators
  • ICP segment definitions
  • Pricing figures
  • Competitor threat level assignments

Flag any pair where the claims appear to contradict. Quote the conflicting lines verbatim — don't paraphrase.

Check 2: Stale references to superseded files

Grep the canonical files, docs/, and notes/ for references to superseded files (e.g., 0226-positioning-v4.md when v5 exists). Stale references in:

  • Canonical files → flag as critical (could produce wrong output)
  • docs/ → flag as warning (client-provided, may be intentional history)
  • notes/ → flag as informational (historical context is fine)
Check 3: Orphan files

For each orphan file identified in Phase 3, ask:

  • Is this a draft that was never promoted? → suggest /learn to integrate or delete
  • Is this a leftover from a superseded version? → suggest moving to an archive/ subfolder
  • Is this a file created by a different agent that never updated CLAUDE.md? → suggest adding a CLAUDE.md reference
Check 4: Operations layer gaps
  • hot.md missing → flag + offer to create from template
  • log.md missing → flag + offer to create from template
  • hot.md staleUpdated: timestamp older than 14 days AND log.md has newer entries → flag as stale cache
  • hot.md over word cap — word count > 500 → flag + suggest trimming
  • log.md entries without proper prefix — entries not matching ## [YYYY-MM-DD] {operation} | {subject} → flag as format drift
Check 5: New-source candidates from gaps

From the canonical files, identify claims marked with [UNAVAILABLE], [ESTIMATED], or "TBD / TBC". These are known data gaps. Surface them as research candidates — files that could be produced by /learn, /company-context, /competitor-research, etc.

Don't propose BUILDs — just name the gap and suggest the skill that could fill it.

Phase 5: Produce the lint report

Write the report to {client}/wiki-lint-{date}.md. Structure:

# Wiki lint report — {client}

**Ran:** {date} {time}
**Operations layer:** {CLAUDE.md: ✓/✗} {hot.md: ✓/✗} {log.md: ✓/✗}
**Files scanned:** {N canonical, M superseded, K orphans, J support}

---

## Critical (could produce wrong output)

### Contradiction: {file-a} vs {file-b}
{quote from file-a}
{quote from file-b}
**Suggested fix:** {one line}

### Stale reference to superseded file
**Found in:** {canonical file path}
**Points to:** {superseded file}
**Current canonical:** {current file}
**Suggested fix:** {one line}

---

## Warnings (should address soon)

### Orphan file: {path}
**Content summary:** {one line}
**Suggested action:** {integrate / archive / reference in CLAUDE.md}

### Operations layer: {specific issue}
**Suggested fix:** {one line}

---

## Informational (data gaps, historical drift)

### Data gap: {claim} marked [UNAVAILABLE]
**Found in:** {file path}
**Suggested skill:** {which skill could fill this}

---

## Summary

- **Critical:** N items
- **Warnings:** N items
- **Informational:** N items
- **Operations layer health:** {complete / partial / missing}
- **Recommended next action:** {one line}

Also append an entry to {client}/log.md:

## [{date}] lint | wiki check | {N} critical, {N} warnings
Report: wiki-lint-{date}.md

Quality checks before presenting the report

  • Every "contradiction" flag has both conflicting lines quoted verbatim
  • Every "stale reference" flag names both the old and new file
  • Every orphan has a summary of its content (not just the path)
  • No false positives from docs/ (client-provided history is often intentional)
  • No false positives from notes/ (raw material is meant to be raw)
  • The log.md entry for the lint run was appended

Common mistakes

MistakeFix
Flagging every dated file as "stale"Only flag if CLAUDE.md points elsewhere and the old file is referenced from a canonical
Flagging orphans under notes/ or docs/Only canonical + compiled topic folders are subject to orphan checks
Running global lint across all clients/wiki is always per-client; use /audit for global
Producing a fix without quoting the evidenceEvery flag must cite the exact line that triggered it
Silently rewriting filesLint is diagnostic only — never edits canonical files; only the report + log.md entry are written

Signals

GitHub stars
36
Forks
14
Last commit
Jul 2026
Advanced
Catalog kind
skill
Gateway key
wiki-matteotitta
Source
github.com/matteotitta/genesys-skills