with one click
corgispec-lint
// Validate memory health across 11 checks — freshness, size caps, broken links, extraction completeness — with severity levels and auto-fix routing.
// Validate memory health across 11 checks — freshness, size caps, broken links, extraction completeness — with severity levels and auto-fix routing.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | corgispec-lint |
| description | Validate memory health across 11 checks — freshness, size caps, broken links, extraction completeness — with severity levels and auto-fix routing. |
| license | MIT |
| compatibility | Requires memory/ and wiki/ directories (created by corgispec-memory-init). |
| metadata | {"author":"openspec","version":"1.0","generatedBy":"1.0.0"} |
Validate memory and wiki health with 11 structured checks.
Performs a comprehensive health check on the project's memory layer (memory/ and wiki/), producing a structured report with findings at three severity levels: error, warning, and info.
The lint skill is read-only during checks — it gathers evidence and reports findings. It does NOT auto-fix issues. Fixes are suggested with actionable instructions.
/corgi-lint for a periodic health checkcorgispec-archive (recommended, not blocking)Do not use this skill to modify memory files, initialize structure, or extract knowledge.
memory/ directory exists with at least session-bridge.mdwiki/ directory exists with at least hot.md and index.mdcorgispec-memory-initIf preconditions fail, report: "Memory structure not found. Run /corgi-memory-init first." and stop.
Check that the following paths exist:
memory/session-bridge.mdmemory/pitfalls.mdwiki/hot.mdwiki/index.mdIf any are missing, report which ones and stop with a suggestion to run /corgi-memory-init.
Execute each check in order. Record findings with severity, description, and suggested fix.
Severity: ⚠️ warning
Procedure:
memory/session-bridge.mdupdated: field from YAML frontmatterPass condition: Updated within the last 30 days.
Fail finding: "session-bridge.md last updated {N} days ago (threshold: 30 days)"
Suggested fix: "Update session-bridge.md with current session state, or mark as intentionally stale if project is dormant."
Severity: ⚠️ warning
Procedure:
wiki/hot.mdupdated: field from YAML frontmatterPass condition: Updated within the last 14 days.
Fail finding: "wiki/hot.md last updated {N} days ago (threshold: 14 days)"
Suggested fix: "Update hot.md with current project state during next session."
Severity: 🔴 error
Procedure:
.md files in memory/ and wiki/ recursively[[target]] and [[target|alias]] patternswiki/ or memory/ → treat as relative to project root|alias portion.md if no extensionPass condition: All wikilinks resolve to existing files.
Fail finding: "Broken wikilink in {source_file}:{line}: [[{target}]] — file not found"
Suggested fix: "Create the missing file, fix the link target, or remove the dead link."
Severity: ⚠️ warning
Procedure:
memory/pitfalls.md## Active section- ):
[[...]] or a change reference (text like change:, from:, or source: followed by an identifier)Pass condition: Every active pitfall entry has at least one source reference.
Fail finding: "Pitfall entry without source link: '{entry_text_first_40_chars}...'"
Suggested fix: "Add a source link to identify which change introduced this pitfall. Format: (source: [[change-name]])"
Severity: ℹ️ info
Procedure:
wiki/architecture/implicit-contracts.md## Contracts:
Pass condition: All contract entries have both a description and a file/module reference, or the file is still in placeholder state.
Fail finding: "Implicit contract '{name}' lacks file/module reference — hard to verify"
Suggested fix: "Add specific file paths or module names that enforce this contract."
Severity: ⚠️ warning
Procedure:
.md files in wiki/ recursively (excluding _index.md files).md files in memory/ and wiki/ for wikilinksPass condition: Every non-index wiki page has at least one incoming wikilink.
Fail finding: "Orphan page: {path} — no incoming wikilinks from memory/ or wiki/"
Suggested fix: "Add a link to this page from the relevant _index.md or from wiki/index.md."
Severity: ℹ️ info
Procedure:
openspec/changes/ that contain a tasks.md with all tasks marked [x] (completed changes)wiki/sessions/{change-name}.md existsPass condition: All recently completed changes have a corresponding session summary.
Fail finding: "Completed change '{name}' has no session summary at wiki/sessions/{name}.md"
Suggested fix: "Run /corgi-archive on this change to trigger knowledge extraction, or manually create the session summary."
Severity: 🔴 error
Procedure:
CLAUDE.md exists → search for ## Session Memory ProtocolCLAUDE.md, check AGENTS.md → search for ## Session Memory ProtocolPass condition: At least one agent config file contains ## Session Memory Protocol.
Fail finding: "Session Memory Protocol section missing from agent config file"
Suggested fix: "Run /corgi-memory-init to inject the protocol, or manually add the ## Session Memory Protocol section."
Severity: ⚠️ warning
Procedure:
wiki/hot.md--- delimiters)Pass condition: Word count ≤ 600.
Fail finding: "wiki/hot.md is {N} words (hard cap: 600 words)"
Suggested fix: "Trim the oldest entries from 'Recently Shipped' or 'Recent Decisions' sections. Target: 500 words."
Severity: ⚠️ warning
Procedure:
wiki/index.mdPass condition: Line count ≤ 80.
Fail finding: "wiki/index.md is {N} lines (hard cap: 80 lines)"
Suggested fix: "Archive completed-change entries from 'Session History' section. Target: 40 lines."
Severity: ℹ️ info
Procedure:
memory/pitfalls.md## Active section- that aren't the placeholder text)Pass condition: Active entry count ≤ 20.
Fail finding: "memory/pitfalls.md has {N} active entries (cap: 20)"
Suggested fix: "Rotate the oldest 10 entries to the ## Archive section. Keep the most relevant/recent pitfalls active."
Assemble all findings into a structured report. Write to wiki/meta/lint-report-{YYYY-MM-DD}.md (overwrite if same-day report exists).
---
type: wiki
generated: {YYYY-MM-DD}
tags: [lint, meta]
---
# Lint Report — {YYYY-MM-DD}
## Summary
| Severity | Count |
|----------|-------|
| 🔴 Error | {N} |
| ⚠️ Warning | {N} |
| ℹ️ Info | {N} |
| ✅ Pass | {N} |
**Overall**: {PASS if 0 errors, WARN if 0 errors but has warnings, FAIL if any errors}
## Findings
### 🔴 Errors
{list of error findings, or "None"}
### ⚠️ Warnings
{list of warning findings, or "None"}
### ℹ️ Info
{list of info findings, or "None"}
## Checks Passed
{list of passing checks with ✅}
## Suggested Actions
{prioritized list: errors first, then warnings, then info}
Display the summary to the user:
wiki/meta/lint-report-{date}.md---)|alias before path resolution)_index.md files (these are navigation hubs, exempt from orphan check)