Skip to content

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.

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.jsonhooks (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.

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)

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.