Maintain Codex Wiki
aiskillstore/marketplace
Maintain a review-first Markdown knowledge base for Codex practices with source provenance, engineering capture, citation-aware queries, explicit archive and promotion, and deterministic linting.
Health-check a research directory produced by /research. An agent skill from iusztinpaul/ai-research-os-workshop.
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lint --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .claude/skills/research-lint && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .claude/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lintType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lint --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .agents/skills/research-lint && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .agents/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lint --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .cursor/skills/research-lint && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .cursor/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/iusztinpaul/ai-research-os-workshop.git --path plugins/ai-research-os/skills/research-lint--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lint --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .gemini/skills/research-lint && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .gemini/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lintInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .github/skills/research-lint && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .github/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install iusztinpaul/ai-research-os-workshop research-lint --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/ai-research-os-workshop.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/ai-research-os/skills/research-lint .opencode/skills/research-lint && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "research-lint" agent skill from https://github.com/iusztinpaul/ai-research-os-workshop/tree/main/plugins/ai-research-os/skills/research-lint into .opencode/skills/research-lint/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "research-lint", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
research-lintHealth-check a research directory produced by /research. An agent skill from iusztinpaul/ai-research-os-workshop.
Research Lint is an agent skill from iusztinpaul/ai-research-os-workshop. Health-check a research directory produced by /research. Runs seven checks — orphan sources, missing entity/concept hubs, missing comparison candidates, broken wikilinks, stale claims, contradictions, and open-question synthesis. Outputs a report; edits where safe (broken-link flags, open-question append, contradiction surfacing); flags-only otherwise. Always user-triggered, never automated. Trigger when the user says things like "lint my research", "health check my research", "check the wiki", "audit my research…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts (for example `agents/lint_judge.md`, `scripts/_lintlib.py` and `scripts/lint_broken_links.py`).
It sits in Knowledge Management, covering Linting and formatting. The repository describes itself as: How to turn your Second Brain into a living research memory that your agents maintain. Workshop with slides, video and code. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dc66605. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 5 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
uvFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Research Lint loads about 2.3k tokens when it runs. Until then it costs about 154 tokens; SKILL.md has 777 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from iusztinpaul/ai-research-os-workshop at commit dc66605, republished under its MIT licence (© iusztinpaul). 777 words, ~2,287 tokens.
.claude/skills/research-lint/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.You audit a research directory and surface health issues. Lint is user-triggered, never automated. Each pass is read-mostly: you write only to wiki/open-questions.md, wiki/contradictions.md, index.yaml, index.md, and log.md — never to source pages, entity pages, concept pages, or raw files.
This skill answers: "what's broken or thin in this wiki, and what should I research next?"
Same logic as /research (query mode):
working-dir for research-*/ and ask if multiple exist.Verify it's a v4 layout — <research_dir>/raw/ and <research_dir>/wiki/ must exist directly under the research dir (no memory/ wrapper). If it's older (v1 with raw at root, or v3 with memory/ wrapper), instruct the user to run migrate_layout.py first and stop.
Default: run all seven checks. The user can scope down via natural language ("just check broken links", "skip the LLM stuff"). Map their phrasing to:
| Check | Cost | Edits the wiki? |
|---|---|---|
| orphans | cheap (script) | flags only |
| missing-hubs | cheap (script) | flags only |
| missing-comparisons | cheap (script) | flags only |
| broken-links | cheap (script) | flags only |
| stale-claims | LLM | flags only |
| contradictions | LLM (slow) | appends to wiki/contradictions.md |
| open-questions | LLM | appends to wiki/open-questions.md |
The four cheap checks always run. The three LLM checks run by default but can be skipped per user request.
Run all four mechanical scripts in parallel and collect their JSON outputs. They all read-only; safe to run any time.
SKILL_DIR="${CLAUDE_PLUGIN_ROOT:-.claude}/skills/research-lint"
RD="<research_dir>"
uv run --script "$SKILL_DIR/scripts/lint_orphans.py" --research-dir "$RD" > "$RD/lint-orphans.json" &
uv run --script "$SKILL_DIR/scripts/lint_broken_links.py" --research-dir "$RD" > "$RD/lint-broken-links.json" &
uv run --script "$SKILL_DIR/scripts/lint_missing_hubs.py" --research-dir "$RD" > "$RD/lint-missing-hubs.json" &
uv run --script "$SKILL_DIR/scripts/lint_missing_comparisons.py" --research-dir "$RD" > "$RD/lint-missing-comparisons.json" &
waitEach script prints a single-line JSON {check: "...", findings: [...]} describing what it found. Aggregate counts only — do not load full findings into your context window unless the user explicitly asks for the full list.
Spawn three lint_judge subagents in parallel using a single message with multiple Agent calls. Each gets a different check_type:
wiki/sources/*.md "Tensions" section + entity/concept "Tensions" sections; writes new contradictions to wiki/contradictions.md.source_count >= 3, checks whether the newest source contradicts older claims; flags candidates without writing.wiki/open-questions.md.Pass each subagent:
check_typeresearch_dirresearch_topic, input_summary (read from index.yaml)output_path (only for contradictions and open-questions; null for stale-claims since it's flag-only)Each returns a JSON summary on stdout: {check_type, findings_count, written: true|false, flags: [...]}. The orchestrator aggregates flags into the final report.
Some checks generate additive edits the lint pass should apply automatically. Others generate flags the user must act on.
| Check | Auto-apply | Notes |
|---|---|---|
| orphans | NO | flag only — user decides whether to delete the source or add a wiki citation |
| missing-hubs | NO | flag — user can /research it or accept the absence |
| missing-comparisons | NO | flag — user can /research-render comparison <a> <b> if they want |
| broken-links | NO | flag — wiki page may be missing because not yet promoted, or because the link is genuinely wrong |
| stale-claims | NO | flag — needs human judgment |
| contradictions | YES | append to wiki/contradictions.md (the page is meant to grow) |
| open-questions | YES | append new questions to wiki/open-questions.md |
After any auto-apply edits land, regenerate the index:
# If contradictions.md or open-questions.md changed, count_wiki_pages may have moved.
PRIOR_CREATED=$(grep '^created:' "<research_dir>/index.yaml" | awk -F"'" '{print $2}')
# Re-run build_index_yaml.py is unnecessary because no source data changed,
# but build_index_md.py must regenerate to reflect new pages in the index.
uv run --script ${CLAUDE_PLUGIN_ROOT:-.claude}/skills/research/scripts/build_index_md.py --research-dir "<research_dir>"DATE=$(date -u +%Y-%m-%d)
cat >> "<research_dir>/log.md" <<EOF
## [$DATE] lint | <topic>
- orphans: <count>
- missing-hubs: <count>
- missing-comparisons: <count>
- broken-links: <count>
- stale-claims: <count flagged>
- contradictions: <count appended to contradictions.md>
- open-questions: <count appended to open-questions.md>
EOFStructure the report so the user can scan it and act:
## Lint report — <topic>
Research dir: <path>
Run at: <ISO-8601>
### Summary
- Total sources: <N>, total wiki pages: <M>
- Issues found: <orphans> orphans · <missing_hubs> missing hubs · <broken> broken links · <stale> stale claims · <contradictions> contradictions · <open_questions> open questions
### Action items (need your decision)
1. Orphans (<N>) — sources never cited by the wiki:
- <title> (origin: <origin>, score: 0.XX)
- ... (capped at 5 shown; full list in <research_dir>/lint-orphans.json)
2. Missing hubs (<N>) — concepts/entities mentioned ≥3 times with no page:
- "<concept>" appears in <X> source pages
- ...
3. Broken links (<N>):
- [[wiki/concepts/foo]] referenced from [[wiki/sources/abc]] but the file doesn't exist
- ...
4. Stale claims (<N>): see <research_dir>/lint-stale-claims.json
### Auto-applied edits
- <K> contradictions appended to [[wiki/contradictions.md]]
- <L> open questions appended to [[wiki/open-questions.md]]
### Next steps
- For each orphan: decide delete vs. add wiki citation
- For missing hubs: run /research with the concept name, OR accept the absence
- For missing comparisons: run /research-render comparison <a> <b>
- For broken links: edit the source file, OR remove the referenceCap the bulleted lists at 5 items per category. Point users at the JSON files in <research_dir>/ for the full lists. After they review, the JSONs can be deleted (rm <research_dir>/lint-*.json) — they are scratch.
wiki/contradictions.md, wiki/open-questions.md, index.md (regenerated), and log.md (append). Never touch source pages, entity pages, concept pages, or raw files.last_updated and the log entry). Contradictions and open-questions append only when genuinely new.source_count >= 2).agents/lint_judge.md — Lint Judge Subagent. Generic agent dispatched for contradictions, stale-claims, and open-questions checks via a check_type input.scripts/lint_orphans.py — Finds sources in index.yaml whose original_path and uri_full are never wikilinked from any wiki page.scripts/lint_broken_links.py — Scans every wiki page for [[wikilinks]] and flags any that don't resolve to an existing file.scripts/lint_missing_hubs.py — Counts entity/concept name mentions across source pages; flags those with ≥3 mentions and no wiki/entities/<slug>.md or wiki/concepts/<slug>.md.scripts/lint_missing_comparisons.py — Pairs entity/concept pages by mutual [[wikilink]] references; flags pairs with ≥2 mutual citations and no comparison page.© iusztinpaul, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts) in plugins/ai-research-os/skills/research-lint of iusztinpaul/ai-research-os-workshop.
Open the folder on GitHubat commit dc66605
Research Lint next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Research Lint this skilliusztinpaul/ai-research-os-workshop | 179 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Maintain Codex Wikiaiskillstore/marketplace | 433 | 1 repos | ~2k | Automated safety check: Notes | None | |
| Mc Wiki Deep Lintreceptron/mulmoclaude | 371 | — | ~1.4k | Automated safety check: Warn | MIT | |
| Speckit Wiki Statusharu/redmine_ai_helper | 106 | — | ~647 | Automated safety check: Pass | MIT | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| Second Brain LintNicholasSpisak/second-brain | 737 | — | ~1k | Automated safety check: Notes | None |
aiskillstore/marketplace
Maintain a review-first Markdown knowledge base for Codex practices with source provenance, engineering capture, citation-aware queries, explicit archive and promotion, and deterministic linting.
receptron/mulmoclaude
On-demand LLM-driven wiki review — find contradictions between pages, stale claims, and missing concepts (topics mentioned in index.md / log.md / sources but not yet captured as their own page).
haru/redmine_ai_helper
Compact wiki snapshot: counts, freshness, open lint issues, and one recommended next action
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
NicholasSpisak/second-brain
Health-check the wiki for contradictions, orphan pages, stale claims, and missing cross-references.
compozy/kb
Operate the kb CLI to build and maintain topic-based Karpathy-style knowledge bases: gated ingestion, decision-model classification, linking, retrieval and review, wiki compilation, lint-and-heal…
iusztinpaul/ai-research-os-workshop
Expert guide for the NotebookLM CLI (nlm) and MCP server - interfaces for Google NotebookLM.
iusztinpaul/ai-research-os-workshop
Build, extend, AND query a persistent LLM-maintained wiki for any research topic.
iusztinpaul/ai-research-os-workshop
Distill a research directory (produced by /research) into a single compact research.md containing a guideline-relative distillation of only the sources that were actually used in a piece of content.
iusztinpaul/ai-research-os-workshop
Generate a multi-form answer (Marp slide deck, matplotlib chart, Obsidian Canvas, or social content brief) from one or more wiki pages in a research directory and file the output back into…
iusztinpaul/ai-research-os-workshop
How to use the Readwise CLI — access highlights, documents, and your entire reading library from the command line
Categories
Health-check a research directory produced by /research. An agent skill from iusztinpaul/ai-research-os-workshop. Research Lint is an agent skill from iusztinpaul/ai-research-os-workshop. Health-check a research directory produced by /research.
Research Lint fits situations like: the user says things like lint my research; health check my research; audit my research dir; whats wrong with my wiki.
Run `npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a claude-code`. Or copy the skill folder (plugins/ai-research-os/skills/research-lint in iusztinpaul/ai-research-os-workshop) into .claude/skills/research-lint in your project. Claude Code loads it when a task matches its description.
Run `npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a codex`. Or copy the skill folder (plugins/ai-research-os/skills/research-lint in iusztinpaul/ai-research-os-workshop) into .agents/skills/research-lint in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add iusztinpaul/ai-research-os-workshop --skill research-lint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/research-lint, .gemini/skills/research-lint, .github/skills/research-lint and .opencode/skills/research-lint in your project.
Going by SKILL.md and its folder, Research Lint needs Python for the scripts in its folder and the command-line tools its instructions call (uv). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Research Lint is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Research Lint: Maintain Codex Wiki (aiskillstore/marketplace, 433 stars), Mc Wiki Deep Lint (receptron/mulmoclaude, 371 stars), Speckit Wiki Status (haru/redmine_ai_helper, 106 stars) and LLM Wiki (lewislulu/llm-wiki-skill, 655 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
iusztinpaul (a GitHub user) maintains it in iusztinpaul/ai-research-os-workshop, which has 179 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on June 27, 2026.
Source: iusztinpaul/ai-research-os-workshop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.