[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XDFX787AVH8K00Y8CZ3BWC":3,"skill-same:01M6XDFX787AVH8K00Y8CZ3BWC":93},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":72,"commitSha":73,"skillDirectory":74,"forksCount":14,"repositoryHtmlUrl":75,"repositoryHomepageUrl":6,"ownerHtmlUrl":76,"ownerBlogUrl":6,"ownerDescription":77,"updatedAt":78,"install":79,"resources":92},"01M6XDFX787AVH8K00Y8CZ3BWC","agents-search",null,"Discover, search, and manage Claude Code agents. Use when you want to find available agents, list installed agents, or refresh the agent catalog. Triggers on: \"search agents\", \"list agents\", \"find agent\", \"what agents\", \"agent catalog\".","kaiohenricunha\u002Fdotbabel","kaiohenricunha","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F69804490?v=4","01M6XCZD37W0KPCDGEA40Y610V","Kaio Cunha","01M6XCZD7SX714D114H3ZPNW09",0,"MIT","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fagents-search\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"agents search","search","only","when","you","2025","native","devex","mechanical","discover","query","debugging","fetch","list","write","read","Bash","doc","audit","code","2026-11-10 10:12:30",false,"---\nid: agents-search\nname: agents-search\ntype: skill\nversion: 1.0.0\ndomain:\n  - devex\nplatform:\n  - none\ntask:\n  - debugging\nmaturity: validated\nowner: \"@kaiohenricunha\"\ncreated: 2025-01-01T00:00:00.000Z\nupdated: 2026-04-17T00:00:00.000Z\ndescription: |\n  Discover, search, and manage Claude Code agents. Use when you want to find available agents, list installed agents, or refresh the agent catalog. Triggers on: \"search agents\", \"list agents\", \"find agent\", \"what agents\", \"agent catalog\".\nargument-hint: search \u003Cquery> | list | fetch \u003Cname> | invalidate [--fetch]\ntools: Glob, Read, Grep, Write, Bash, WebFetch\neffort: medium\nmodel: sonnet\ndotbabel:\n  compute:\n    mode: pin\n    requirement: mechanical\n    pin:\n      runtime: claude\n      config:\n        model: sonnet\n    binding: consumer\n    rationale: \"Audit class A: keep the authored native pin for this read-only file-parsing skill (DOC-1).\"\n---\n\n# Agents Search — Discovery and Management\n\nDiscover, search, and manage Claude Code sub-agents installed under `~\u002F.claude\u002Fagents\u002F`.\nSupports four sub-commands: `search`, `list`, `fetch`, and `invalidate`.\n\n## Arguments\n\n- `$0` — sub-command: `search`, `list`, `fetch`, or `invalidate`. If not provided, default to `list`.\n- `$1` — query string (for `search`), agent name (for `fetch`), or `--fetch` flag (for `invalidate`).\n\n---\n\n## Sub-Commands\n\n### Read-only compute labels for `search` and `list`\n\nRead agent definitions as data. These two sub-commands never install, fetch, synchronize,\nor change an agent, a catalog, or a runtime setting.\n\nUse a valid, explicitly authored `dotbabel.compute` declaration when it is available.\nAn installed native projection can omit that private metadata. In that case, read the\nmatching canonical source only through an existing, verified Dotbabel projection manifest\nand an explicitly known source root. Verify the source identity and hash before using it.\nNever guess a source root or follow an unverified generated comment. If the canonical\ndeclaration cannot be verified, report **undeclared\u002Flegacy**.\n\nKeep the authored mode, requirement and binding separate from the installed native `model`\nand `effort` fields. `mode: inherit` belongs to the **inherit** group. Otherwise, group only\nby an explicitly declared valid `requirement`. A dynamic or pinned declaration without an\nexplicit class belongs to **undeclared\u002Flegacy**, with its mode shown in the demand cell.\nAn absent or invalid declaration also belongs there; identify invalid metadata instead of\nsilently treating it as inheritance. Do not infer a demand class from a model name, a tool\nlist, a missing native model, or a normalized default. These labels describe declared demand,\nnot measured model quality or native enforcement.\n\nShow native selectors and effort exactly as written, or `unset` when absent. A native\n`model: inherit` remains a native control; it does not establish canonical inheritance.\n\n### `search \u003Cquery>`\n\nFind installed agents whose name or description matches a query string.\n\n**Steps:**\n\n1. Use `Glob` to enumerate all files at `~\u002F.claude\u002Fagents\u002F*.md`.\n2. For each file, use `Read` to load its content (frontmatter + body). Parse YAML frontmatter\n   (the block between the first `---` and the second `---`) to extract:\n   - `name` (string)\n   - `model` and `effort` (native values, may be absent — display `unset`)\n   - Canonical compute mode, explicit requirement and binding, using the read-only rules above\n   - `tools` (array or comma-separated string, may be absent — default to `\"\"`)\n   - `description` (string — use only the first line if multi-line)\n3. Perform a **case-insensitive substring match** of `\u003Cquery>` against both `name` and the first\n   line of `description`. Include a file if either field matches.\n4. If one or more agents match, render a markdown table:\n\n   ```\n   | Name | Compute demand | Native model | Native effort | Tools | Description |\n   | ---- | -------------- | ------------ | ------------- | ----- | ----------- |\n   | ...  | ...            | ...          | ...           | ...   | ...         |\n   ```\n\n   - `Tools` column: join array entries with `\", \"` or display the raw string; truncate to 40 chars\n     with `…` if longer.\n   - `Description` column: first line of the `description` field only.\n\n5. If no agents match, output exactly:\n\n   ```\n   No agents found matching '\u003Cquery>'\n   ```\n\n6. If Glob returns no results (no agents installed), check `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` — if it exists and is less than 12 hours old (use `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to check mtime), display results from the catalog instead and note they are from the cached remote catalog.\n\n---\n\n### `list`\n\nList all installed agents grouped by explicitly declared canonical compute demand.\n\n**Steps:**\n\n1. Use `Glob` to enumerate all files at `~\u002F.claude\u002Fagents\u002F*.md`.\n2. For each file, `Read` its frontmatter and extract the same fields as `search`.\n   Resolve canonical metadata only through the read-only rules above.\n3. Group agents in this fixed order:\n   - **mechanical** — explicit canonical requirement `mechanical`\n   - **routine** — explicit canonical requirement `routine`\n   - **deep** — explicit canonical requirement `deep`\n   - **frontier** — explicit canonical requirement `frontier`\n   - **exceptional** — explicit canonical requirement `exceptional`\n   - **inherit** — explicit canonical `mode: inherit`\n   - **undeclared\u002Flegacy** — no verified explicit class or inheritance declaration\n4. For each non-empty group, render a section header and a table. Sort names within\n   the group alphabetically. Show the canonical mode\u002Fclass\u002Fbinding in `Compute demand`;\n   keep native controls in their own columns:\n\n   ```markdown\n   ### Frontier\n\n   | Name | Compute demand | Native model | Native effort | Tools | Description |\n   | ---- | -------------- | ------------ | ------------- | ----- | ----------- |\n   ```\n\n5. If `~\u002F.claude\u002Fagents\u002F` does not exist or contains no `.md` files, output:\n\n   ```\n   No agents installed. Run `\u002Fagents:search fetch \u003Cname>` to install one.\n   ```\n\n6. If Glob returns no results (no agents installed), check `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` — if it exists and is less than 12 hours old (use `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to check mtime), display results from the catalog instead and note they are from the cached remote catalog.\n\n---\n\n### `fetch \u003Cname>`\n\nRead a specific agent's full definition and offer install \u002F view options.\n\n**Steps:**\n\n1. Construct the local path `~\u002F.claude\u002Fagents\u002F\u003Cname>.md`.\n2. Attempt `Read` on that path.\n   - **If found locally:** display the agent's frontmatter fields (one per line, `key: value`)\n     followed by the full body. Then present the user with options:\n     - Already installed — offer to re-display or customize.\n     - Customize — open the file for editing via a follow-up Edit call.\n     - View only — no further action.\n3. **If not found locally:** check whether `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` exists via `Read`.\n   - If the catalog exists, search it for a section or entry matching `\u003Cname>` (case-insensitive).\n     If a match is found, display the matching content and offer the user three options:\n     - Install — write the agent definition to `~\u002F.claude\u002Fagents\u002F\u003Cname>.md` using `Write`.\n     - Customize — show the content and ask the user to provide edits before writing.\n     - View only — no further action.\n   - If the catalog does not exist or contains no match, output:\n\n     ```\n     Agent '\u003Cname>' not found locally or in catalog.\n     Run `\u002Fagents:search invalidate --fetch` to refresh the catalog, then try again.\n     ```\n\n---\n\n### `invalidate [--fetch]`\n\nClear the local agent catalog cache, optionally refreshing it from GitHub.\n\n**Steps:**\n\n1. **If `--fetch` flag is present:** Read the mtime of `~\u002F.claude\u002Fcache\u002Fagents-catalog.md`\n   now (before deleting anything) using\n   `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)`.\n   Store the result for informational use later.\n\n2. Check whether `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` exists via `Read`.\n   - If it exists, delete it using `Bash`: `rm ~\u002F.claude\u002Fcache\u002Fagents-catalog.md`.\n   - If it does not exist, note \"No cache file found.\"\n\n3. **Without `--fetch`** (cache clear only):\n   Output:\n\n   ```\n   Cache cleared.\n   ```\n\n4. **With `--fetch`** (clear and refresh — user explicitly requested a fresh fetch):\n   - Fetch the catalog using `WebFetch` from:\n     `https:\u002F\u002Fraw.githubusercontent.com\u002FVoltAgent\u002Fawesome-claude-code-subagents\u002Fmain\u002FREADME.md`\n     - Use HTTPS only (SEC-3).\n     - If the fetch succeeds, ensure `~\u002F.claude\u002Fcache\u002F` exists\n       (`Bash: mkdir -p ~\u002F.claude\u002Fcache`) and save the content to\n       `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` using `Write`.\n       Output:\n\n       ```\n       Catalog refreshed. \u003CN> bytes written to ~\u002F.claude\u002Fcache\u002Fagents-catalog.md\n       ```\n\n     - If the fetch fails (network error, non-200, timeout), **do not hard-fail** (REL-1).\n       Warn the user:\n\n       ```\n       Warning: Could not fetch catalog (network error). Existing cache cleared.\n       Run `\u002Fagents:search invalidate --fetch` again when connectivity is restored.\n       ```\n\n       Do not throw or abort; return gracefully.\n\n---\n\n## Cache TTL\n\nWhenever `search` or `list` falls back to `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` for data,\ncheck whether the cache is stale before using it:\n\n1. Run `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to get mtime.\n2. If `(now - mtime) > 43200` seconds (12 hours), display an inline notice:\n\n   ```\n   (Cache is stale — last updated more than 12 h ago. Run `\u002Fagents:search invalidate --fetch` to refresh.)\n   ```\n\n   Then continue with the stale data rather than blocking the user.\n\n---\n\n## Tool Usage\n\nAll file I\u002FO uses Claude Code built-in tools — this is a skill, not a shell script:\n\n| Operation                       | Tool                                                                    |\n| ------------------------------- | ----------------------------------------------------------------------- |\n| Enumerate agents                | `Glob`                                                                  |\n| Read file content \u002F frontmatter | `Read`                                                                  |\n| Search catalog content          | `Grep`                                                                  |\n| Write \u002F install agent           | `Write`                                                                 |\n| Delete cache file               | `Bash(rm \u003Cpath>)`                                                       |\n| Create cache directory          | `Bash(mkdir -p \u003Cpath>)`                                                 |\n| Check file mtime                | `Bash(stat -c %Y \u003Cpath>)` (GNU) \u002F `Bash(stat -f %m \u003Cpath>)` (BSD\u002FmacOS) |\n| Fetch remote catalog            | `WebFetch`                                                              |\n\n---\n\n## Key Principles\n\n1. **Case-insensitive everywhere.** All name and description matching is case-insensitive.\n2. **Graceful degradation.** Network failures in `invalidate --fetch` warn and continue; they\n   never abort the session or raise an unhandled error (REL-1).\n3. **HTTPS only.** The catalog URL must always use `https:\u002F\u002F` (SEC-3).\n4. **Read before write.** Use `Read` to check existing files before `Write` to avoid blind\n   overwrites without user confirmation.\n5. **User drives installs.** Never silently write to `~\u002F.claude\u002Fagents\u002F` without presenting\n   options and getting implicit or explicit user consent.\n6. **Canonical group order is fixed.** `list` uses mechanical → routine → deep → frontier →\n   exceptional → inherit → undeclared\u002Flegacy. Native selectors remain separate metadata;\n   never turn their spelling into a demand class, quality ranking, or enforcement claim.\n","# Agents Search — Discovery and Management\n\nDiscover, search, and manage Claude Code sub-agents installed under `~\u002F.claude\u002Fagents\u002F`.\nSupports four sub-commands: `search`, `list`, `fetch`, and `invalidate`.\n\n## Arguments\n\n- `$0` — sub-command: `search`, `list`, `fetch`, or `invalidate`. If not provided, default to `list`.\n- `$1` — query string (for `search`), agent name (for `fetch`), or `--fetch` flag (for `invalidate`).\n\n---\n\n## Sub-Commands\n\n### Read-only compute labels for `search` and `list`\n\nRead agent definitions as data. These two sub-commands never install, fetch, synchronize,\nor change an agent, a catalog, or a runtime setting.\n\nUse a valid, explicitly authored `dotbabel.compute` declaration when it is available.\nAn installed native projection can omit that private metadata. In that case, read the\nmatching canonical source only through an existing, verified Dotbabel projection manifest\nand an explicitly known source root. Verify the source identity and hash before using it.\nNever guess a source root or follow an unverified generated comment. If the canonical\ndeclaration cannot be verified, report **undeclared\u002Flegacy**.\n\nKeep the authored mode, requirement and binding separate from the installed native `model`\nand `effort` fields. `mode: inherit` belongs to the **inherit** group. Otherwise, group only\nby an explicitly declared valid `requirement`. A dynamic or pinned declaration without an\nexplicit class belongs to **undeclared\u002Flegacy**, with its mode shown in the demand cell.\nAn absent or invalid declaration also belongs there; identify invalid metadata instead of\nsilently treating it as inheritance. Do not infer a demand class from a model name, a tool\nlist, a missing native model, or a normalized default. These labels describe declared demand,\nnot measured model quality or native enforcement.\n\nShow native selectors and effort exactly as written, or `unset` when absent. A native\n`model: inherit` remains a native control; it does not establish canonical inheritance.\n\n### `search \u003Cquery>`\n\nFind installed agents whose name or description matches a query string.\n\n**Steps:**\n\n1. Use `Glob` to enumerate all files at `~\u002F.claude\u002Fagents\u002F*.md`.\n2. For each file, use `Read` to load its content (frontmatter + body). Parse YAML frontmatter\n   (the block between the first `---` and the second `---`) to extract:\n   - `name` (string)\n   - `model` and `effort` (native values, may be absent — display `unset`)\n   - Canonical compute mode, explicit requirement and binding, using the read-only rules above\n   - `tools` (array or comma-separated string, may be absent — default to `\"\"`)\n   - `description` (string — use only the first line if multi-line)\n3. Perform a **case-insensitive substring match** of `\u003Cquery>` against both `name` and the first\n   line of `description`. Include a file if either field matches.\n4. If one or more agents match, render a markdown table:\n\n   ```\n   | Name | Compute demand | Native model | Native effort | Tools | Description |\n   | ---- | -------------- | ------------ | ------------- | ----- | ----------- |\n   | ...  | ...            | ...          | ...           | ...   | ...         |\n   ```\n\n   - `Tools` column: join array entries with `\", \"` or display the raw string; truncate to 40 chars\n     with `…` if longer.\n   - `Description` column: first line of the `description` field only.\n\n5. If no agents match, output exactly:\n\n   ```\n   No agents found matching '\u003Cquery>'\n   ```\n\n6. If Glob returns no results (no agents installed), check `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` — if it exists and is less than 12 hours old (use `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to check mtime), display results from the catalog instead and note they are from the cached remote catalog.\n\n---\n\n### `list`\n\nList all installed agents grouped by explicitly declared canonical compute demand.\n\n**Steps:**\n\n1. Use `Glob` to enumerate all files at `~\u002F.claude\u002Fagents\u002F*.md`.\n2. For each file, `Read` its frontmatter and extract the same fields as `search`.\n   Resolve canonical metadata only through the read-only rules above.\n3. Group agents in this fixed order:\n   - **mechanical** — explicit canonical requirement `mechanical`\n   - **routine** — explicit canonical requirement `routine`\n   - **deep** — explicit canonical requirement `deep`\n   - **frontier** — explicit canonical requirement `frontier`\n   - **exceptional** — explicit canonical requirement `exceptional`\n   - **inherit** — explicit canonical `mode: inherit`\n   - **undeclared\u002Flegacy** — no verified explicit class or inheritance declaration\n4. For each non-empty group, render a section header and a table. Sort names within\n   the group alphabetically. Show the canonical mode\u002Fclass\u002Fbinding in `Compute demand`;\n   keep native controls in their own columns:\n\n   ```markdown\n   ### Frontier\n\n   | Name | Compute demand | Native model | Native effort | Tools | Description |\n   | ---- | -------------- | ------------ | ------------- | ----- | ----------- |\n   ```\n\n5. If `~\u002F.claude\u002Fagents\u002F` does not exist or contains no `.md` files, output:\n\n   ```\n   No agents installed. Run `\u002Fagents:search fetch \u003Cname>` to install one.\n   ```\n\n6. If Glob returns no results (no agents installed), check `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` — if it exists and is less than 12 hours old (use `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to check mtime), display results from the catalog instead and note they are from the cached remote catalog.\n\n---\n\n### `fetch \u003Cname>`\n\nRead a specific agent's full definition and offer install \u002F view options.\n\n**Steps:**\n\n1. Construct the local path `~\u002F.claude\u002Fagents\u002F\u003Cname>.md`.\n2. Attempt `Read` on that path.\n   - **If found locally:** display the agent's frontmatter fields (one per line, `key: value`)\n     followed by the full body. Then present the user with options:\n     - Already installed — offer to re-display or customize.\n     - Customize — open the file for editing via a follow-up Edit call.\n     - View only — no further action.\n3. **If not found locally:** check whether `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` exists via `Read`.\n   - If the catalog exists, search it for a section or entry matching `\u003Cname>` (case-insensitive).\n     If a match is found, display the matching content and offer the user three options:\n     - Install — write the agent definition to `~\u002F.claude\u002Fagents\u002F\u003Cname>.md` using `Write`.\n     - Customize — show the content and ask the user to provide edits before writing.\n     - View only — no further action.\n   - If the catalog does not exist or contains no match, output:\n\n     ```\n     Agent '\u003Cname>' not found locally or in catalog.\n     Run `\u002Fagents:search invalidate --fetch` to refresh the catalog, then try again.\n     ```\n\n---\n\n### `invalidate [--fetch]`\n\nClear the local agent catalog cache, optionally refreshing it from GitHub.\n\n**Steps:**\n\n1. **If `--fetch` flag is present:** Read the mtime of `~\u002F.claude\u002Fcache\u002Fagents-catalog.md`\n   now (before deleting anything) using\n   `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)`.\n   Store the result for informational use later.\n\n2. Check whether `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` exists via `Read`.\n   - If it exists, delete it using `Bash`: `rm ~\u002F.claude\u002Fcache\u002Fagents-catalog.md`.\n   - If it does not exist, note \"No cache file found.\"\n\n3. **Without `--fetch`** (cache clear only):\n   Output:\n\n   ```\n   Cache cleared.\n   ```\n\n4. **With `--fetch`** (clear and refresh — user explicitly requested a fresh fetch):\n   - Fetch the catalog using `WebFetch` from:\n     `https:\u002F\u002Fraw.githubusercontent.com\u002FVoltAgent\u002Fawesome-claude-code-subagents\u002Fmain\u002FREADME.md`\n     - Use HTTPS only (SEC-3).\n     - If the fetch succeeds, ensure `~\u002F.claude\u002Fcache\u002F` exists\n       (`Bash: mkdir -p ~\u002F.claude\u002Fcache`) and save the content to\n       `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` using `Write`.\n       Output:\n\n       ```\n       Catalog refreshed. \u003CN> bytes written to ~\u002F.claude\u002Fcache\u002Fagents-catalog.md\n       ```\n\n     - If the fetch fails (network error, non-200, timeout), **do not hard-fail** (REL-1).\n       Warn the user:\n\n       ```\n       Warning: Could not fetch catalog (network error). Existing cache cleared.\n       Run `\u002Fagents:search invalidate --fetch` again when connectivity is restored.\n       ```\n\n       Do not throw or abort; return gracefully.\n\n---\n\n## Cache TTL\n\nWhenever `search` or `list` falls back to `~\u002F.claude\u002Fcache\u002Fagents-catalog.md` for data,\ncheck whether the cache is stale before using it:\n\n1. Run `Bash(stat -c %Y ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || stat -f %m ~\u002F.claude\u002Fcache\u002Fagents-catalog.md 2>\u002Fdev\u002Fnull || echo 0)` to get mtime.\n2. If `(now - mtime) > 43200` seconds (12 hours), display an inline notice:\n\n   ```\n   (Cache is stale — last updated more than 12 h ago. Run `\u002Fagents:search invalidate --fetch` to refresh.)\n   ```\n\n   Then continue with the stale data rather than blocking the user.\n\n---\n\n## Tool Usage\n\nAll file I\u002FO uses Claude Code built-in tools — this is a skill, not a shell script:\n\n| Operation                       | Tool                                                                    |\n| ------------------------------- | ----------------------------------------------------------------------- |\n| Enumerate agents                | `Glob`                                                                  |\n| Read file content \u002F frontmatter | `Read`                                                                  |\n| Search catalog content          | `Grep`                                                                  |\n| Write \u002F install agent           | `Write`                                                                 |\n| Delete cache file               | `Bash(rm \u003Cpath>)`                                                       |\n| Create cache directory          | `Bash(mkdir -p \u003Cpath>)`                                                 |\n| Check file mtime                | `Bash(stat -c %Y \u003Cpath>)` (GNU) \u002F `Bash(stat -f %m \u003Cpath>)` (BSD\u002FmacOS) |\n| Fetch remote catalog            | `WebFetch`                                                              |\n\n---\n\n## Key Principles\n\n1. **Case-insensitive everywhere.** All name and description matching is case-insensitive.\n2. **Graceful degradation.** Network failures in `invalidate --fetch` warn and continue; they\n   never abort the session or raise an unhandled error (REL-1).\n3. **HTTPS only.** The catalog URL must always use `https:\u002F\u002F` (SEC-3).\n4. **Read before write.** Use `Read` to check existing files before `Write` to avoid blind\n   overwrites without user confirmation.\n5. **User drives installs.** Never silently write to `~\u002F.claude\u002Fagents\u002F` without presenting\n   options and getting implicit or explicit user consent.\n6. **Canonical group order is fixed.** `list` uses mechanical → routine → deep → frontier →\n   exceptional → inherit → undeclared\u002Flegacy. Native selectors remain separate metadata;\n   never turn their spelling into a demand class, quality ranking, or enforcement claim.\n",{"id":5,"name":5,"task":49,"type":50,"model":51,"owner":52,"tools":53,"domain":54,"effort":55,"created":56,"updated":57,"version":58,"dotbabel":59,"maturity":67,"platform":68,"description":70,"argument-hint":71},[35],"skill","sonnet","@kaiohenricunha","Glob, Read, Grep, Write, Bash, WebFetch",[31],"medium",1735689600000,1776384000000,"1.0.0",{"compute":60},{"pin":61,"mode":64,"binding":65,"rationale":66,"requirement":32},{"config":62,"runtime":63},{"model":51},"claude","pin","consumer","Audit class A: keep the authored native pin for this read-only file-parsing skill (DOC-1).","validated",[69],"none","Discover, search, and manage Claude Code agents. Use when you want to find available agents, list installed agents, or refresh the agent catalog. Triggers on: \"search agents\", \"list agents\", \"find agent\", \"what agents\", \"agent catalog\".\n","search \u003Cquery> | list | fetch \u003Cname> | invalidate [--fetch]","main","91c337164997b99943fbcc64e8e362577b67bc81","skills\u002Fagents-search","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha","I'm a Platform\u002FInfra engineer who happens to work in cybersec and write Go code.","2026-10-26 14:12:51",{"source":8,"skillName":5,"commands":80,"prompt":90,"zipAvailable":91},[81,84,87],{"tool":82,"command":83},"npx","npx skills add kaiohenricunha\u002Fdotbabel --skill agents-search",{"tool":85,"command":86},"bunx","bunx skills add kaiohenricunha\u002Fdotbabel --skill agents-search",{"tool":88,"command":89},"pnpm","pnpm dlx skills add kaiohenricunha\u002Fdotbabel --skill agents-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fagents-search\u002FSKILL.md",true,[],[94,119,149,169,190,213],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":44},"01M6XDQ7QMASPFZ355MYKCD06T","yolo","Start temporary autonomy for the current task or an explicit scope with a required --for expiry. Codex permits scoped pushes, merges, deploys, and releases after strict testing and validation; Full access is a separate runtime setting. Claude Code uses a session permission hook with a protected-action denylist.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fyolo\u002FSKILL.md",[100],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[96,102,103,43,104,105,106,107,108,109,110,111,112,113,31,114,115,116,117,118],"testing","merge","start","access","session","ops","autonomy","releases","permission","full","runtime","scope","hook","true","action","for","scoped",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":133,"publishedAt":44},"01M6XDQ1N21VE4KH98JWGZ7GN9","veracity-audit","Audit a data pipeline for Veracity and Value. Dispatches data-scientist, compliance-auditor, and data-engineer agents with project context injected at dispatch time. All source paths are supplied via flags — no defaults, no project assumptions. Subcommands: audit (full pipeline walk), score-check (scoring math only), gate-check (gate coverage only), source-trace \u003Clabel> (single source end-to-end). Invoke when: \"audit pipeline\", \"veracity check\", \"scoring math correct?\", \"check gates\", \"trace source\", \"verify quality gates\", \"formula correct?\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fveracity-audit\u002FSKILL.md",[125,130],{"categoryNo":126,"categoryName":127,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":131,"categoryName":132,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000037","律师与法务",[42,134,102,135,136,137,40,138,139,26,140,141,142,143,144,145,146,147,148,27],"veracity audit","review","data pipeline","pipeline","math","coverage","engineer","formula","scoring","time","project","worker","end","at","invoke",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":44},"01M6XDPVDKBR376C06CEK9BC5S","validate-spec","Audit an already-implemented spec against the codebase. Walks each constraint (ARCH-N, PERF-N, KD-N, etc.) and acceptance criterion, grounds findings in file:line evidence, runs the spec.json acceptance_commands, and writes a single audit doc to docs\u002Faudits\u002F. Use whenever the user asks to \"validate a spec\", \"audit a spec\", \"check if spec is implemented\", \"verify the spec is done\", \"is this spec really done\", or otherwise wants closure on spec-driven work. Read-only against the spec — produces an audit, never modifies the spec itself.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fvalidate-spec\u002FSKILL.md",[],[156,157,158,102,135,159,160,42,40,161,39,162,26,163,164,165,166,29,167,168],"spec","validate","validate spec","run","acceptance","work","never","max","done","arch","line","spec-driven","closure",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":178,"publishedAt":44},"01M6XDPMMECH82RAW553Y94HDS","terragrunt-specialist","Deep-dive Terragrunt hierarchy review, DRY pattern audits, and run-all orchestration analysis. Use for structured investigations of multi-environment Terragrunt layouts, dependency graphs, remote state config, and hook correctness. Triggers on: \"Terragrunt audit\", \"run-all review\", \"dependency block\", \"DRY pattern review\", \"env hierarchy audit\", \"mock_outputs\", \"terragrunt hooks\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fterragrunt-specialist\u002FSKILL.md",[175],{"categoryNo":176,"categoryName":177,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000011","运维与部署",[179,180,181,135,182,35,159,42,183,40,39,184,185,163,186,187,29,188,147,189],"terragrunt","specialist","terragrunt specialist","orchestration","analysis","dependency","hooks","deep","dry","remote","hierarchy",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":203,"publishedAt":44},"01M6XDPFJS2HGSE13RXF1HV8S7","terraform-specialist","Deep-dive Terraform architecture review, module design, state management, and migration. Use for structured investigations of Terraform workspaces, provider configuration, module coupling, import workflows, and test coverage. Triggers on: \"Terraform audit\", \"module review\", \"state management\", \"Terraform import\", \"workspace design\", \"provider config review\", \"Terraform testing\".","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fterraform-specialist\u002FSKILL.md",[196,199,200],{"categoryNo":197,"categoryName":198,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":176,"categoryName":177,"taxonomyType":128,"taxonomyTypeDesc":129},{"categoryNo":201,"categoryName":202,"taxonomyType":128,"taxonomyTypeDesc":129},"01JBSEEDCAT000000000000015","视觉设计",[204,205,180,102,206,135,207,208,209,35,42,40,39,139,210,211,186,212,29,147],"terraform","terraform specialist","design","workflows","architecture","architecture review","test coverage","workspaces","problem",{"skillNo":214,"name":156,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":222,"publishedAt":44},"01M6XDP7V6H8WYPSXVEKYE6HJ6","Create structured engineering specs through interactive pairing. Use when the user wants to create a spec, design doc, technical specification, architecture document, RFC, or engineering plan. Triggers on \"let's spec this out\", \"create a spec\", \"design doc\", \"write a technical plan\", \"plan the architecture\". Works for greenfield and brownfield projects. Outputs to docs\u002Fspecs\u002F.","https:\u002F\u002Fgithub.com\u002Fkaiohenricunha\u002Fdotbabel\u002Fblob\u002Fmain\u002Fskills\u002Fspec\u002FSKILL.md",[218,219],{"categoryNo":201,"categoryName":202,"taxonomyType":128,"taxonomyTypeDesc":129},{"categoryNo":220,"categoryName":221,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000032","设计师",[156,206,223,208,224,225,226,38,227,228,229,230,231,232,233,117,234,235,236,237],"component","create","plan","projects","interactive","use","document","specification","triggers","opus","technical specification","trade-offs","technical plan","outputs","frontier"]