{"id":"608a1e71-ad11-43b1-a571-104e54aae529","entityType":"agent","slug":"clawhub-athola-nm-pensive-blast-radius","name":"blast-radius","canonicalUrl":"https://www.xpersona.co/agent/clawhub-athola-nm-pensive-blast-radius","canonicalPath":"/agent/clawhub-athola-nm-pensive-blast-radius","generatedAt":"2026-10-10T10:48:28.925Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":null},"description":"Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Skill: blast-radius Owner: athola Summary: Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:18:25.916Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:38:42.594Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:55:24.463Z | user Release v1.9.16 v1.9.14 |","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-pensive-blast-radius","sourceUrl":"https://clawhub.ai/athola/nm-pensive-blast-radius","homepage":"https://clawhub.ai/athola/skills/nm-pensive-blast-radius","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/athola/nm-pensive-blast-radius","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/athola/skills/nm-pensive-blast-radius","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Ski"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":null},"stars":null,"forks":null,"downloads":1618,"packageName":null,"latestVersion":"1.9.19","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T06:29:07.381Z","lastCrawledAt":"2026-10-10T06:29:07.381Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T06:29:07.381Z","lastVerifiedAt":null,"highlights":[{"version":"1.9.19","createdAt":"2026-08-26T13:18:25.916Z","changelog":"Release v1.9.19","fileCount":3,"zipByteSize":3535},{"version":"1.9.17","createdAt":"2026-07-30T05:38:42.594Z","changelog":"Release v1.9.17","fileCount":3,"zipByteSize":3405},{"version":"1.9.16","createdAt":"2026-07-14T19:55:24.463Z","changelog":"Release v1.9.16","fileCount":3,"zipByteSize":3484},{"version":"1.9.14","createdAt":"2026-06-30T18:03:47.965Z","changelog":"Release v1.9.14","fileCount":3,"zipByteSize":3496},{"version":"1.9.13","createdAt":"2026-06-27T16:21:53.655Z","changelog":"Release v1.9.13","fileCount":3,"zipByteSize":3568},{"version":"1.9.12","createdAt":"2026-06-19T03:16:56.653Z","changelog":"Release v1.9.12","fileCount":3,"zipByteSize":3382},{"version":"1.0.3","createdAt":"2026-06-18T14:11:49.299Z","changelog":"Release v1.9.12","fileCount":3,"zipByteSize":3431},{"version":"1.0.2","createdAt":"2026-05-09T02:19:08.828Z","changelog":"Release v1.9.5","fileCount":3,"zipByteSize":3384}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-pensive-blast-radius","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:48:28.923Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-pensive-blast-radius/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":null},"readme":"Skill: blast-radius\n\nOwner: athola\n\nSummary: Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\n\nTags: latest:1.9.19\n\nVersion history:\n\nv1.9.19 | 2026-08-26T13:18:25.916Z | user\n\nRelease v1.9.19\n\nv1.9.17 | 2026-07-30T05:38:42.594Z | user\n\nRelease v1.9.17\n\nv1.9.16 | 2026-07-14T19:55:24.463Z | user\n\nRelease v1.9.16\n\nv1.9.14 | 2026-06-30T18:03:47.965Z | user\n\nRelease v1.9.14\n\nv1.9.13 | 2026-06-27T16:21:53.655Z | user\n\nRelease v1.9.13\n\nv1.9.12 | 2026-06-19T03:16:56.653Z | user\n\nRelease v1.9.12\n\nv1.0.3 | 2026-06-18T14:11:49.299Z | user\n\nRelease v1.9.12\n\nv1.0.2 | 2026-05-09T02:19:08.828Z | user\n\nRelease v1.9.5\n\nv1.0.1 | 2026-05-06T14:20:21.017Z | user\n\nRelease v1.9.4\n\nv1.0.0 | 2026-04-15T14:01:38.373Z | auto\n\nBlast Radius skill initial release:\n\n- Analyze code change impact with risk scoring and code knowledge graph.\n- Identifies affected nodes, untested functions, and review priorities.\n- Works with gauntlet plugin for deep analysis; supports manual and fallback modes if missing.\n- Ranks risk based on test coverage, security, flow role, cross-module calls, and caller count.\n- Suggests prioritized review actions for high-risk or security-sensitive changes.\n\nArchive index:\n\nArchive v1.9.19: 3 files, 3535 bytes\n\nFiles: skill-card.md (2216b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.19:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.19:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750305916\n}\n\nFile v1.9.19:skill-card.md\n\n## Description:\n\nAnalyzes code change impact with risk scoring and affected-node mapping before merge, helping developers understand what a change touches and where test coverage may be missing.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and code reviewers use this skill before merging changes to identify affected code, rank risk, surface untested areas, and decide what additional review or tests are needed.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may locate and run a local gauntlet graph-query helper from the user's Claude plugin directory when that helper is present.\n\nMitigation: Install and use the skill only in environments where the local gauntlet plugin is trusted; otherwise rely on the documented git and search fallback path.\n\nRisk: Manual fallback search can scan broad file types and may produce false positives when tracing impact by filename or symbol stem.\n\nMitigation: Treat fallback results as review guidance, narrow searches by language or project conventions when practical, and confirm important findings before merge decisions.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-pensive-blast-radius)\n- [Skill homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive)\n- [Publisher profile](https://clawhub.ai/user/athola)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, guidance]\n\n**Output Format:** [Markdown table and concise text with optional shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces prioritized impact findings, untested-function notes, an overall risk level, and suggested follow-up actions.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release metadata; artifact frontmatter says 1.9.8)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.9.17: 3 files, 3405 bytes\n\nFiles: skill-card.md (2060b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.17:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.17:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.17\",\n  \"publishedAt\": 1785389922594\n}\n\nFile v1.9.17:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping before merging so engineers can see what a change touches and where test coverage may be missing. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineers use this skill before merging code changes to estimate affected code paths, prioritize risky nodes, and identify untested functions that need review or tests. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may inspect the current repository while estimating code-change impact. <br>\nMitigation: Use it only in repositories where code search and dependency analysis are acceptable. <br>\nRisk: The skill may execute an already-installed gauntlet graph_query.py helper from the local Claude plugins directory. <br>\nMitigation: Verify the local gauntlet installation before use and rebuild graph data when the skill reports that graph.db is missing. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-pensive-blast-radius) <br>\n- [Project homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Analysis, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [Markdown table with concise findings and recommended actions] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include risk scores, affected nodes, file locations, test coverage gaps, and suggested follow-up actions.] <br>\n\n## Skill Version(s): <br>\n1.9.17 (source: ClawHub release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.16: 3 files, 3484 bytes\n\nFiles: skill-card.md (2342b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.16:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.16:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.16\",\n  \"publishedAt\": 1784058924463\n}\n\nFile v1.9.16:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping so developers can understand what a change touches and what lacks test coverage before merging. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineers use this skill before merging code changes to map affected files or functions, identify missing test coverage, and prioritize review based on risk. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may read and search local repository contents to map changed files and call sites. <br>\nMitigation: Use it only in repositories whose contents may be inspected by the agent, and review proposed commands before execution. <br>\nRisk: Repository search fallbacks using rg or grep can produce false positives. <br>\nMitigation: Prefer graph or semantic analysis when available, and manually verify affected nodes and test gaps before acting on the results. <br>\nRisk: Risk suggestions may be incorrect or misleading if accepted without review. <br>\nMitigation: Treat the risk table and suggested actions as review inputs, then confirm coverage, security relevance, and backward compatibility before merging. <br>\n\n\n## Reference(s): <br>\n- [Pensive plugin homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-pensive-blast-radius) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [analysis, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown with risk tables, prioritized findings, suggested actions, and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May use graph-based impact results when available, or repository search fallbacks for manual analysis.] <br>\n\n## Skill Version(s): <br>\n1.9.16 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.14: 3 files, 3496 bytes\n\nFiles: skill-card.md (2309b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.14:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.14:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.14\",\n  \"publishedAt\": 1782842627965\n}\n\nFile v1.9.14:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping so developers can understand what a change touches and what lacks test coverage before merging. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and code reviewers use this skill before merging code changes to map affected files or functions, identify untested areas, and prioritize review effort by risk. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Impact analysis can propose shell commands or repository scans that affect the developer workflow. <br>\nMitigation: Review the target repository, command text, and expected output before running any command. <br>\nRisk: Fallback dependency tracing with text search can produce false positives or miss dynamic call paths. <br>\nMitigation: Treat the affected-node list as review guidance and confirm high-risk findings with tests or graph-backed analysis where available. <br>\nRisk: Review workflows may expose code diffs or repository details to a selected external model provider. <br>\nMitigation: Use the skill only in trusted development contexts and avoid sending sensitive code to providers that are not approved for the project. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-pensive-blast-radius) <br>\n- [Metadata homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown with tables and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include risk scores, affected-node mappings, test-coverage gaps, and suggested review actions.] <br>\n\n## Skill Version(s): <br>\n1.9.14 (source: server-resolved release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.13: 3 files, 3568 bytes\n\nFiles: skill-card.md (2449b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.13:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.13:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.13\",\n  \"publishedAt\": 1782577313655\n}\n\nFile v1.9.13:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping before merging to show what a change touches and what lacks test coverage. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineers use this skill before merging code changes to identify affected functions or files, assess risk drivers such as missing tests or security-sensitive logic, and choose follow-up review or test actions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill inspects local repository contents through git diff and search commands, and may invoke a locally installed gauntlet graph-query helper. <br>\nMitigation: Use it only in repositories where local code inspection by the agent is acceptable, and review optional helper commands before running them. <br>\nRisk: Manual rg or grep fallback can produce noisy impact results because it searches by filename stem across file types. <br>\nMitigation: Treat fallback results as review guidance, narrow searches by language where appropriate, and confirm affected call sites before acting. <br>\nRisk: Graph-based impact analysis depends on an available and current graph database. <br>\nMitigation: Build or refresh the gauntlet graph before relying on graph results, and use the manual fallback when graph data is unavailable. <br>\n\n\n## Reference(s): <br>\n- [Nm Pensive Blast Radius on ClawHub](https://clawhub.ai/athola/skills/nm-pensive-blast-radius) <br>\n- [Pensive homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown with risk tables and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May use local git diff, a gauntlet graph-query helper, sem, rg, or grep depending on repository tooling.] <br>\n\n## Skill Version(s): <br>\n1.9.13 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.12: 3 files, 3382 bytes\n\nFiles: skill-card.md (2091b), SKILL.md (3993b), _meta.json (143b)\n\nFile v1.9.12:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.9.12:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.12\",\n  \"publishedAt\": 1781839016653\n}\n\nFile v1.9.12:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping before merging. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and code reviewers use this skill to inspect changed files, map affected code paths, identify missing test coverage, and prioritize review attention before merging. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill inspects local repository changes and may search across repository files or use an existing local graph plugin. <br>\nMitigation: Run it only in codebases where local impact analysis is appropriate and review proposed commands before execution. <br>\nRisk: Impact analysis can miss affected code when optional graph data is unavailable or stale. <br>\nMitigation: Use the skill's manual fallback results as review guidance and confirm high-risk areas with targeted tests or code review. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/nm-pensive-blast-radius) <br>\n- [ClawHub publisher profile](https://clawhub.ai/user/athola) <br>\n- [OpenClaw homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown with tables and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May reference local repository diffs, search results, optional graph analysis output, risk scores, affected nodes, and suggested review actions.] <br>\n\n## Skill Version(s): <br>\n1.9.12 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 3 files, 3431 bytes\n\nFiles: skill-card.md (2136b), SKILL.md (3993b), _meta.json (142b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1781791909299\n}\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nAnalyzes code change impact with risk scoring and affected-node mapping before merging. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and engineers use this skill before merging code changes to map affected files or functions, prioritize risky nodes, identify missing test coverage, and decide follow-up review or test actions. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may inspect local code changes and broader repository files while performing impact analysis. <br>\nMitigation: Run it only in repositories where local code inspection is acceptable, and review generated findings before using them for merge decisions. <br>\nRisk: Fallback analysis can use filename or text matching when graph data is unavailable, which may produce false positives or miss indirect dependencies. <br>\nMitigation: Prefer graph-backed analysis when available, build the graph first when prompted, and treat fallback results as advisory. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/nm-pensive-blast-radius) <br>\n- [Homepage metadata](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, guidance] <br>\n**Output Format:** [Markdown table and concise guidance with optional shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May include risk scores, affected nodes, untested functions, and suggested review actions; graph-backed detail depends on available local tools.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 3 files, 3384 bytes\n\nFiles: skill-card.md (2417b), SKILL.md (3667b), _meta.json (142b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyze the blast radius of code changes with risk scoring. Shows affected nodes, untested functions, and review priorities using the code knowledge graph\nversion: 1.9.5\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       rg -l \"$(basename $f .py)\" --type py . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       grep -rl \"$(basename $f .py)\" --include=\"*.py\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778293148828\n}\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nAnalyze the blast radius of code changes with risk scoring, affected nodes, untested functions, and review priorities using the code knowledge graph. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and code reviewers use this skill to assess changed code, identify impacted functions, highlight test coverage gaps, and prioritize review actions before merging. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill may run local repository inspection commands and may call the gauntlet graph_query.py helper when that plugin is installed. <br>\nMitigation: Install only in repositories where local analysis commands are acceptable, and review the gauntlet plugin before relying on graph-based results. <br>\nRisk: Fallback impact analysis can be incomplete when gauntlet or sem is unavailable because it relies on text search over changed files. <br>\nMitigation: Treat fallback results as review guidance and supplement them with project-specific tests or dependency analysis for high-risk changes. <br>\nRisk: Risk scores are heuristic and may over-prioritize or under-prioritize affected code. <br>\nMitigation: Use the scores for triage, then manually review security-sensitive logic, high-fan-in changes, and test coverage before merging. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/nm-pensive-blast-radius) <br>\n- [Pensive plugin homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Guidance] <br>\n**Output Format:** [Markdown with risk tables and inline shell commands] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Reports affected nodes, untested functions, overall risk level, and review priorities.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: ClawHub release metadata; source skill frontmatter reports 1.9.5) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 2 files, 2127 bytes\n\nFiles: SKILL.md (3667b), _meta.json (142b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyze the blast radius of code changes with risk scoring. Shows affected nodes, untested functions, and review priorities using the code knowledge graph\nversion: 1.9.4\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       rg -l \"$(basename $f .py)\" --type py . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       grep -rl \"$(basename $f .py)\" --include=\"*.py\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778077221017\n}\n\nArchive v1.0.0: 2 files, 2127 bytes\n\nFiles: SKILL.md (3667b), _meta.json (142b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: blast-radius\ndescription: |\n  Analyze the blast radius of code changes with risk scoring. Shows affected nodes, untested functions, and review priorities using the code knowledge graph\nversion: 1.8.2\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       rg -l \"$(basename $f .py)\" --type py . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       grep -rl \"$(basename $f .py)\" --include=\"*.py\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant\n   ```\n\n4. **Highlight untested functions**: List any affected\n   functions that lack test coverage (no TESTED_BY edge).\n\n5. **Show overall risk**: Display the overall risk level\n   (low/medium/high) based on the maximum risk score.\n\n6. **Suggest actions**:\n   - For high-risk nodes: \"Consider adding tests before\n     merging\"\n   - For security-sensitive nodes: \"Review authentication\n     and authorization logic carefully\"\n   - For high-fan-in nodes: \"Changes here affect many\n     callers; verify backward compatibility\"\n\n## Risk Scoring Model\n\nFive weighted factors (sum capped at 1.0):\n\n| Factor | Weight | Meaning |\n|--------|--------|---------|\n| Test gap | 0.30 | No test coverage |\n| Security | 0.20 | Auth/crypto/SQL keywords |\n| Flow participation | 0.25 | Part of execution flows |\n| Cross-community | 0.15 | Called from other modules |\n| Caller count | 0.10 | High fan-in function |\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776261698373\n}","readmeExcerpt":"Skill: blast-radius Owner: athola Summary: Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:18:25.916Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:38:42.594Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:55:24.463Z | user Release v1.9.16 v1.9.14 |","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"GRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)"},{"language":"bash","snippet":"python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2"},{"language":"bash","snippet":"if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi"},{"language":"bash","snippet":"# Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi"},{"language":"text","snippet":"Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.py:112     | high fan-in\n   0.41  | api.py::handle_request  | api.py:78     | flow participant"},{"language":"bash","snippet":"GRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: blast-radius\ndescription: |\n  Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage\nversion: 1.9.8\ntriggers:\n  - code-review\n  - impact-analysis\n  - risk-scoring\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/pensive\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: pensive\n---\n\n> **Night Market Skill** — ported from [claude-night-market/pensive](https://github.com/athola/claude-night-market/tree/master/plugins/pensive). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# Blast Radius Analysis\n\nAnalyze the impact of current code changes using the\ncode knowledge graph.\n\n## Prerequisites\n\nThis skill requires the **gauntlet** plugin for graph\ndata. Check if it's available:\n\n```bash\nGRAPH_QUERY=$(find ~/.claude/plugins -name \"graph_query.py\" -path \"*/gauntlet/*\" 2>/dev/null | head -1)\n```\n\n**If gauntlet is not installed** (GRAPH_QUERY is empty):\nFall back to a manual impact analysis using `git diff`\nand `grep` to trace imports and call sites. Skip graph\nsteps and go directly to step 3 (manual mode).\n\n**If gauntlet is installed but no graph.db exists**:\nTell the user: \"Run `/gauntlet-graph build` first.\"\n\n## Steps\n\n1. **Show current changes**: Run `git diff --stat` to\n   show the user what files changed.\n\n2. **Run impact analysis** (requires gauntlet):\n   ```bash\n   python3 \"$GRAPH_QUERY\" \\\n       --action impact --base-ref HEAD --depth 2\n   ```\n\n   **Fallback tier 1 (sem available, no gauntlet)**:\n   Use sem for cross-file dependency tracing:\n   ```bash\n   if command -v sem &>/dev/null; then\n     sem impact --json <changed-file>\n   fi\n   ```\n\n   This traces real function-level dependencies instead\n   of filename matching. See `leyline:sem-integration`\n   for detection patterns.\n\n   **Fallback tier 2 (no sem, no gauntlet)**: Trace\n   callers of changed functions with rg (or grep):\n   ```bash\n   # Prefer rg for speed; fall back to grep\n   if command -v rg &>/dev/null; then\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       rg -l \"$stem\" . 2>/dev/null\n     done | sort -u\n   else\n     git diff --name-only HEAD | while read f; do\n       stem=\"${f%.*}\"; stem=\"${stem##*/}\"\n       [ -z \"$stem\" ] && continue  # skip dotfiles (.gitignore etc.)\n       grep -rl \"$stem\" . 2>/dev/null\n     done | sort -u\n   fi\n   ```\n\n   Note: this searches all file types. For Python-only\n   projects, add `--type py` to `rg` or `--include=\"*.py\"`\n   to `grep` to reduce false positives.\n\n3. **Display results in priority order**:\n\n   Format the output as a table:\n   ```\n   Risk  | Node                    | File          | Reason\n   0.85  | auth.py::verify_token   | auth.py:45    | untested, security\n   0.62  | db.py::execute_query    | db.p"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-pensive-blast-radius\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750305916\n}"},{"path":"skill-card.md","content":"## Description:\n\nAnalyzes code change impact with risk scoring and affected-node mapping before merge, helping developers understand what a change touches and where test coverage may be missing.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and code reviewers use this skill before merging changes to identify affected code, rank risk, surface untested areas, and decide what additional review or tests are needed.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The skill may locate and run a local gauntlet graph-query helper from the user's Claude plugin directory when that helper is present.\n\nMitigation: Install and use the skill only in environments where the local gauntlet plugin is trusted; otherwise rely on the documented git and search fallback path.\n\nRisk: Manual fallback search can scan broad file types and may produce false positives when tracing impact by filename or symbol stem.\n\nMitigation: Treat fallback results as review guidance, narrow searches by language or project conventions when practical, and confirm important findings before merge decisions.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-pensive-blast-radius)\n- [Skill homepage](https://github.com/athola/claude-night-market/tree/master/plugins/pensive)\n- [Publisher profile](https://clawhub.ai/user/athola)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, guidance]\n\n**Output Format:** [Markdown table and concise text with optional shell command snippets]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces prioritized impact findings, untested-function notes, an overall risk level, and suggested follow-up actions.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release metadata; artifact frontmatter says 1.9.8)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Skill: blast-radius Owner: athola Summary: Analyzes code change impact with risk scoring and affected-node mapping. Use before merging to understand what a change touches and what lacks test coverage Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:18:25.916Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:38:42.594Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:55:24.463Z | user Release v1.9.16 v1.9.14 |","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1006,"uniquenessScore":53,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T06:29:07.381Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:48:28.925Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}