lint
Skill7 starsChanged 19 days agoMITView on GitHub
Audit the wiki for integrity issues. Say "lint the wiki", "check wiki integrity", "find broken links", "what's stale", or "what's drifted" (or run /founder-os:lint). Six checks: broken cross-references, orphan pages, stale time-sensitive content, provenance gaps, contradictions, and doctrine files that never say why they exist. Read-only - findings are advisory. Run before a weekly review.
80 other projects use a version of this.
Adopted by
Most recently taken up by
- PMDevSolutions/Flaviantheir own version, first seen Nov 8, 2026
- aiagentkit-labs/agentic-dev-kittheir own version, first seen Nov 8, 2026
- levi-qiao/obsidian-llm-wikitheir own version, first seen Nov 8, 2026
- elastic/docs-buildertheir own version, first seen Nov 4, 2026
- DataDog/dd-trace-pytheir own version, first seen Nov 1, 2026
- PMDevSolutions/Aureliustheir own version, first seen Nov 1, 2026
Used with
Projects with it also use coverage, project and 6 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
PydanticSkillcoverage
Fetch coverage diff from Codecov for the current branch or a specific PR. Shows uncovered lines, patch coverage, and overall coverage change.
Also in 4 projects that use this
BugRogerSkillproject
Project lifecycle management. Dispatches to Ada.
Also in 4 projects that use this
AnthropicSkilldigest
Generate a daily or weekly digest of activity across all connected sources. Use when catching up after time away, starting the day and wanting a summary of mentions and action items, or reviewing a week's decisions and document updates grouped by project.
Also in 3 projects that use this
AWSSkillissue
Implement a GitHub issue end-to-end — branch, code, test, docs, and commit.
Also in 4 projects that use this
agenticnotetakingSkillupgrade
Apply plugin knowledge base updates to an existing generated system. Consults the Ars Contexta research graph for methodology improvements, proposes skill upgrades with research justification. Never auto-implements. Triggers on "/upgrade", "upgrade skills", "check for improvements", "update methodology".
Also in 3 projects that use this
MicrosoftSkillhelp
Entry point for the MedImageInsight plugin, covering the getting-started walkthrough, how the skills work, what MI2 is, and troubleshooting.
Also in 4 projects that use this
Other versions80 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 80
- ray-project/ray★ 44ksame name
- FalkorDB/FalkorDB★ 10ksame name
- FastLED/FastLED★ 7.5ksame name
- fleetdm/fleet★ 7.2ksame name
- aaddrick/claude-desktop-debian★ 5.5ksame name
- cloudposse/atmos★ 1.4ksame name
- ethereum/execution-specs★ 1.2ksame name
- adobe/S3Mock★ 1.2ksame name
- maxGraph/maxGraph★ 1.2ksame name
- jason-effi-lab/karpathy-llm-wiki-vault★ 718same name
70 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository100 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- notion-package/CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- add-handsSkill
- add-mouthSkill
- add-voiceSkill
- approval-gatesSkill
- auditSkill
- backupSkill
- blind-spot-reviewSkill
- bottleneck-diagnosticSkill
- brain-logSkill
- brain-passSkill
- brain-snapshotSkill
- brand-interviewSkill
- brand-voice-interviewSkill
- business-context-loaderSkill
- campaign-from-themeSkill
- capture-sweepSkill
- catch-upSkill
- client-updateSkill
- connectSkill
- content-repurposerSkill
- content-startSkill
- context-persistenceSkill
- cross-linkSkill
- data-securitySkill
- decision-frameworkSkill
- decisions-startSkill
- delivery-startSkill
- email-drafterSkill
- employee-reviewSkill
- finance-importSkill
- forcing-questionsSkill
- founder-coachingSkill
- founder-next-moveSkill
- founder-os-setupSkill
- founder-reviewSkill
- founder-scope-challengeSkill
- github-opsSkill
- handoff-protocolSkill
- hireSkill
- historySkill
- housekeepingSkill
- ingestSkill
- knowledge-captureSkill
- legal-complianceSkill
- linkedin-brand-directionSkill
- linkedin-network-scanSkill
- linkedin-postSkill
- linkedin-power-auditSkill
- linkedin-startSkill
- linkedin-warm-revivalSkill
- list-prunerSkill
- log-archiveSkill
- log-replySkill
- meeting-prepSkill
- memory-passSkill
- menuSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
16 rules. 0 are common, 9 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 67 edited versions we read keep these.
9
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Read-only audit of the wiki layer.
- Distinctive: line 18
Run end to end on a fresh install (clean output, no false positives).
- Distinctive: line 19
Run on a populated install and surface real findings with file:line references.
- Distinctive: line 21
Never write to any file.
- Very specific: line 27
If core/identity.md does not exist, stop with: Founder OS not set up here.
- Distinctive: line 39
If the link points to an existing file, OK.
- Distinctive: line 40
If the link points to a missing file, flag.
- Very specific: line 54
All files under roles/ (registry + role definitions.
- Very specific: line 55
All files under rules/ (operating rules + entry conventions.
- Distinctive: line 72
Use the dated headers and frontmatter dates first.
- Very specific: line 79
If anchor date is 30+ days behind today AND the entry has no Decay after: field: flag.
- Very specific: line 91
If brain/log.md exceeds 300 lines, output under STALE CONTENT:
- Very specific: line 104
If raw/ does not exist, skip this check entirely (not all installs use ingest).
- Very specific: line 183
If a section has zero findings, render a single Clean.
- Distinctive: line 185
If total findings count is zero, output:
- Distinctive: line 198
Read-only. Never modify any file.
“Common” is measured: kept by at least 6 in 10 of the 67 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Lint
Runs on: local-exec - Check 6 runs a read-only script. Every other check is reading, so on a surface without script access run Checks 1 to 5 and mark Check 6 as not run.
Read-only audit of the wiki layer. Returns a structured report. Never modifies files.
This skill must:
- Run end to end on a fresh install (clean output, no false positives).
- Run on a populated install and surface real findings with file:line references.
- Render in under 5 seconds for installs with under 1000 wiki files.
- Never write to any file.
Pre-flight
If core/identity.md does not exist, stop with: Founder OS not set up here. Run /founder-os:setup first.
Scope
The wiki layer is the directories listed in scripts/_common.py:WIKI_LAYER_PREFIXES. That module is the canonical source of truth, shared by scripts/wiki-build.py and scripts/query.py so the on-disk graph and the in-memory graph cannot drift.
Skill files (skills/), templates (templates/), commands (.claude/commands/), hooks (.claude/hooks/), docs (docs/), and root metadata (README.md, CLAUDE.md, VERSION, etc.) are NOT scanned. Raw layer (raw/) is scanned only for provenance gaps (Check 4).
Check 1 - Broken cross-references
Scan all wiki files for [[link]] patterns. For each:
- If the link points to an existing file, OK.
- If the link points to a missing file, flag.
- If the link uses an ambiguous slug that matches multiple files, flag with all candidates AND name the deterministic pick. Resolution order: scan directories in the order listed in
scripts/_common.py:WIKI_LAYER_PREFIXES, then alphabetical within the first matching directory. The first match wins. Format the output as[[slug]] -> ambiguous: <candidate list>; would resolve to <first match>.
[[link]] syntax accepts: [[file.md]], [[path/to/file.md]], [[page-name]] (resolves to first match across the wiki).
Check 2 - Orphan pages
For each wiki file, check whether any other wiki file references it ([[]] link, plain markdown link, or filename mention).
Pages that are intentional roots and never get linked TO are exempt:
core/identity.mdcontext/priorities.md,context/clients.md,context/companies.md,context/decisions.mdcadence/daily-anchors.md,cadence/weekly-commitments.md,cadence/quarterly-sprints.md,cadence/annual-targets.mdbrain/log.md,brain/flags.md,brain/patterns.md,brain/decisions-parked.md,brain/needs-input.md,brain/index.md,brain/relations.yaml- All files under
roles/(registry + role definitions; loaded by mode, not by reference) - All files under
rules/(operating rules + entry conventions; loaded by mode, not by reference) - All
README.mdfiles
Anything else with zero inbound references is flagged as orphan.
Check 3 - Stale time-sensitive content
| File | Stale threshold |
cadence/daily-anchors.md | Top ## Today: header date is more than 3 days behind today |
cadence/weekly-commitments.md | Top ## Week of date is more than 7 days behind today |
cadence/quarterly-sprints.md | If file exists, oldest unresolved item is more than 90 days old |
context/decisions.md | Any decision marked pending with no update in 14+ days |
context/clients.md | Any client row with Last contact (or equivalent last-touch) field 30+ days behind today |
brain/flags.md, brain/patterns.md | Any entry whose anchor date (flag header date / First observed:) is 30+ days behind today AND the entry does NOT have a Decay after: field. Soft signal, not a defect. Parked decisions are excluded by convention (rules/entry-conventions.md defines them as trigger-driven, not date-driven). |
brain/log.md | File exceeds 300 lines (documented cap in templates/brain/log.md:2 and templates/brain/index.md:33). |
Use the dated headers and frontmatter dates first. Fall back to file mtime only if no in-content dates.
Decay-convention adoption gap
For each entry in brain/flags.md (## headings) and brain/patterns.md (### headings):
- Determine the anchor date. For flags: the date in the heading line (
## YYYY-MM-DD - <title>). For patterns: aFirst observed:line. - If anchor date is 30+ days behind today AND the entry has no
Decay after:field: flag.
Render under STALE CONTENT, prefixed decay-gap:
decay-gap brain/flags.md: "<entry heading>" - <N> days old, no Decay after: field. Suggest: Decay after: <today YYYY-MM-DD>
This is a soft suggestion, not a defect. The user may have deliberately omitted the field. Cap at the 5 oldest entries per file to avoid flooding.
brain/decisions-parked.md is intentionally excluded. The entry conventions in rules/entry-conventions.md define parked decisions as trigger-driven (no auto-decay), so a parked entry without Decay after: is the documented default, not a gap. The seeded template ships an example with no Decay after: for the same reason; flagging it would be noise on a fresh install.
Log size cap
If brain/log.md exceeds 300 lines, output under STALE CONTENT:
log-cap brain/log.md: <N> lines (cap is 300). Move oldest entries to brain/archive/log-<YYYY-MM>.md.
The cap is a writing convention (not a hard limit). This is a reminder, not a defect.
Check 4 - Provenance gaps
Scan raw/:
- Any raw file with empty
wiki_pages: []AND ingested more than 14 days ago - flag as "ingested but unused". - Any wiki file containing
[[raw/<filename>]]where the raw file does not exist - flag as "broken provenance link".
If raw/ does not exist, skip this check entirely (not all installs use ingest).
Check 5 - Possible contradictions
Heuristic, not deterministic. Flag for human review, never auto-fix.
For each decision marked resolved in context/decisions.md, check whether cadence/weekly-commitments.md (current week + previous week retro) or context/priorities.md contains text that explicitly contradicts the resolution. Examples:
- Decision resolved: "Stop building feature X." Weekly commitments contains: "Build feature X this week."
- Decision resolved: "Hire first ops lead." Priorities contains: "Defer all hires."
This is a low-confidence signal. Output as candidates, not as defects. Phrasing: Possible contradiction (review): <decision> vs <commitment>.
Check 6 - Doctrine that does not say why (advisory, one line)
python scripts/selfdoc_check.py why --jsonNames the files in rules/ and system/ that never state the problem they exist to solve. A file that does not say why it exists gets ignored or misapplied by the next session that opens it, which is the quiet way doctrine stops working (rules/os-as-harness.md, property 1).
Render this as one advisory line, not a list of every file:
SELF-DOCUMENTATION (<N> files)
- <N> doctrine files carry no `why:` - run `python scripts/selfdoc_check.py why` for the list
(or: "Clean.")Three rules keep this useful rather than noisy:
- Advisory forever. It never blocks anything and never appears in NEXT 3 MOVES unless every other check is clean.
- Forward-only. Files written before the convention adopt it the next time you touch them. Nobody backfills, and a long-standing count here is not debt.
- If the script is missing or your surface cannot run it, render
SELF-DOCUMENTATION (not run - no script access). Never renderClean.for a check that did not run.
Output format
Single fenced block. Same skeleton as /founder-os:status for visual consistency.
FOUNDER OS LINT - <total findings count>
Last checked: <YYYY-MM-DD>
CROSS-REFERENCES (<N> issues)
- <file:line>: [[broken-link]] -> file does not exist
- <file:line>: [[ambiguous-slug]] -> ambiguous: <list>; would resolve to <first match>
(or: "Clean.")
ORPHAN PAGES (<N> issues)
- <file>: no inbound references
(or: "Clean.")
STALE CONTENT (<N> issues)
- cadence/daily-anchors.md: top header is YYYY-MM-DD (5 days stale)
- context/decisions.md: <decision title> pending since YYYY-MM-DD (18 days)
- decay-gap brain/flags.md: "<entry heading>" - 42 days old, no Decay after: field. Suggest: Decay after: YYYY-MM-DD
- log-cap brain/log.md: 327 lines (cap is 300). Move oldest entries to brain/archive/log-YYYY-MM.md.
(or: "Clean.")
PROVENANCE (<N> issues)
- raw/<filename>: ingested YYYY-MM-DD, wiki_pages empty (24 days unused)
- context/<file>:line: [[raw/<missing>]] -> raw file does not exist
(or: "Clean." or: "raw/ not present, skipped.")
POSSIBLE CONTRADICTIONS (<N> candidates)
- <decision> (resolved YYYY-MM-DD) vs <commitment in cadence/weekly-commitments.md>
(or: "Clean.")
SELF-DOCUMENTATION (<N> files)
- <N> doctrine files carry no `why:` - run `python scripts/selfdoc_check.py why` for the list
(or: "Clean." or: "not run - no script access")
NEXT 3 MOVES (advisory)
- <highest-priority finding to address>
- <second>
- <third>If a section has zero findings, render a single Clean. line under that header.
If total findings count is zero, output:
FOUNDER OS LINT - 0 findings
Last checked: <YYYY-MM-DD>
Clean across all checks. Nothing to address.Output rules
- Read-only. Never modify any file. If you find something that obviously should be fixed, name it under NEXT 3 MOVES, do not edit.
- One finding per line. No paragraphs.
- File:line references where possible. File-only references where line is not meaningful (orphans, stale headers).
Edge cases
- No wiki files yet. Output:
Empty install. Nothing to lint. Run /founder-os:setup first. raw/does not exist. Skip Check 4 entirely. Don't list this as an issue.- Network/ folder missing. Skip silently - it's optional in many installs.
- Companies/ folder missing. Skip silently - some founders run a single business.
- Very large install (>1000 wiki files). Continue but warn at the top:
Large install (<count> files). Lint took <duration>. Consider archiving older content.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

