Discovery map
The scanner classifies artifacts by type × tool. tool is one of
claude · codex · gemini · cursor · hermes · grok · qwen ·
deepseek · ollama · pi · cline · generic. Open-weight models
(Llama, Gemma, Qwen, DeepSeek, GLM, MiniMax, …) don’t define artifact
conventions themselves — the harnesses that run them do, and those are what
the scanner indexes.
Patterns
Section titled “Patterns”| Type | Patterns (global ~/.{tool}/... and per-project) | Format |
|---|---|---|
| skill | **/skills/**/SKILL.md, **/skills(-cursor)/**/DESCRIPTION.md (recursive; Hermes nests skills into category folders — SKILL.md per skill, DESCRIPTION.md per category) | YAML frontmatter |
| agent | **/agents/**/*.{md,toml,mdc} (recursive; plugin/nested subagents), Modelfile/*.modelfile (Ollama persona — the FROM base model is attributed in provides) | md frontmatter / TOML / Modelfile |
| rule | CLAUDE.md/CLAUDE.local.md, AGENTS.md, GEMINI.md/GEMINI.local.md, GROK.md/GROK.local.md, QWEN.md, DEEPSEEK.md, .cursorrules, .clinerules (file or .clinerules/*.md), .pi/{SYSTEM,APPEND_SYSTEM}.md (Pi system-prompt overrides; Pi’s AGENTS.md is covered by the generic pattern), **/.cursor/rules/**/*.mdc, .codex/rules/*.rules, .hermes/SOUL.md, .claude/output-styles/*.md | md / mdc / plain |
| memory | .claude/projects/*/memory/*.md, .codex/memories/*.md, .hermes/memories/* | markdown |
| command | **/commands/**/*.{md,toml} (subdirs = /ns:name), .codex/prompts/*.md, .pi/prompts/*.md (and ~/.pi/agent/prompts/), .clinerules/workflows/*.md | md frontmatter / TOML |
| mcp_server | ~/.claude.json (mcpServers + projects[].mcpServers), **/.mcp.json, .codex/config.toml ([mcp_servers]), .gemini/settings.json, .cursor/mcp.json, .grok/settings.json, .grok/user-settings.json, .qwen/settings.json, .deepseek/settings.json, cline_mcp_settings.json | JSON / TOML — one record per server |
| settings | .claude/settings.json/.local.json, .gemini/settings.json, .codex/requirements.toml, .grok/settings.json/user-settings.json, .qwen/settings.json, .deepseek/settings.json, .pi/settings.json (and ~/.pi/agent/settings.json) | JSON / TOML |
| hook | extracted from Claude settings.json → hooks (event → matcher → command) | (config) |
To reach bundled artifacts, the crawl makes path-specific exceptions to its
ignore list for .claude/plugins and .gemini/extensions. Memory SQLite
stores are skipped (empty, locked, or session transcripts) — the curated
markdown is the source.
Enrichment fields
Section titled “Enrichment fields”Every record carries:
| Field | Values |
|---|---|
scope | project · global · local · managed · plugin · extension |
provenance | direct · plugin:<id> · extension:<id> |
sensitivity | public · secret-adjacent · executable |
trustState | trust review state (imports default to untrusted) |
enabled / activation | whether and how the artifact activates |
provides / requires | declared capabilities and requirements (env/header key names land in requires; values are dropped) |
Redaction at the boundary
Section titled “Redaction at the boundary”mcp_server, settings, and hook records are read surgically: env and
header values are dropped to ***, key names kept. Credential stores
(oauth_creds.json, auth.json, …) and *.db/*.log files are hard-skipped.
Raw ~/.claude.json is read only for its mcpServers maps — never indexed
whole. See the security model.