From subimage-mcp
Triage SubImage security findings against the enabled compliance frameworks, group them by theme, and recommend the next investigation steps. Use when the user asks to "triage findings", "what's new in SubImage today", "summarize my open findings", "any urgent findings", or wants a daily/weekly findings digest. Pulls framework status first, then per-framework rules and findings, and proposes the highest-priority items per framework.
How this skill is triggered — by the user, by Claude, or both
Slash command
/subimage-mcp:triage-new-findingsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Walks SubImage's compliance frameworks → rules → findings hierarchy to produce a triaged digest the user can act on. Always grounds findings in the framework that flagged them so the user understands which control set is unhappy, not just "rule X has 12 findings".
Walks SubImage's compliance frameworks → rules → findings hierarchy to produce a triaged digest the user can act on. Always grounds findings in the framework that flagged them so the user understands which control set is unhappy, not just "rule X has 12 findings".
✅ User asks for a findings digest, triage, or "what's new". ✅ User wants to know which findings are most urgent or which framework is most off-track. ✅ Used as the body of a scheduled agent for a daily/weekly security brief.
❌ User asks about a specific CVE: use subimage-mcp:investigate-cve instead.
❌ User asks about a specific attack path: use subimage-mcp:review-attack-path.
❌ User wants the underlying graph (relationships, blast radius): build a Cypher query via subimageAgentBuildQuery then run with subimageRunCypher.
The user is connected to SubImage via MCP and has the subimageReadMe global tool guide available. This skill assumes the role-based tools (subimageListFrameworks, subimageListRules, subimageGetRuleFindings, optionally subimageSendNotification and subimageCreateTicket) are reachable.
| Value | When to ask |
|---|---|
| Framework filter | If the user mentions one explicitly ("CIS AWS", "SubImage", "SOC 2"), scope to it. Otherwise pull all enabled frameworks and break down by framework. |
| Time window | If the user says "this week", "since yesterday": apply that window to lastSeenAt / firstSeenAt. Default: open and recently updated. |
| Severity threshold | If the user says "only criticals": filter severity in [critical, high]. Default: include everything. |
| Notification target | Only if the user explicitly asks to ship the digest somewhere (Slack channel, email, ticket). Never send unprompted. |
Call subimageListFrameworks. Identify which are enabled. Note their slugs and display names. Common frameworks: cis-aws, cis-gcp, cis-azure, subimage, plus any custom ones.
If zero enabled, stop and tell the user: "No compliance frameworks are enabled. Enable one in Settings → Frameworks, or run subimage-mcp:improve-cartography-coverage to suggest which ones make sense given the connected modules."
Call subimageListRules. Group by framework. For each framework, keep rules where findingsCount > 0. Sort by:
Take the top 5 to 10 per framework. Going wider produces noise; going narrower hides cross-framework patterns.
For each top rule, call subimageGetRuleFindings(rule_id). Collect:
If a rule has hundreds of findings, sample the most recent and mention the total count.
Look across the collected findings for cross-rule themes. Examples that often emerge:
findingsCount jumped → propose investigating the changecis-aws and subimage → only count once in the prioritized listProduce a digest in this exact structure:
# SubImage findings triage: <date>
## Frameworks at a glance
- <framework name>: <pass-rate or finding-count summary>, <delta if known>
- ...
## Top issues per framework
### <framework 1>
1. <rule title>: <count> findings, severity <X>
- hot resources: [[entity:<Label>:<id>|<short-name>]], [[entity:<Label>:<id>|<short-name>]] (+<rest>)
- why it matters: <one line>
- next step: <one line>
2. ...
### <framework 2>
...
## Cross-cutting themes
- <theme>: <evidence>
## Recommended actions
- <action 1, owner-pingable>
- <action 2, ticket-worthy>
Keep each rule entry to 3-4 lines. The user is scanning, not reading.
If (and only if) the user asked to send the digest:
subimageSendNotification(channel=..., body=...). Confirm the channel before sending.subimageCreateTicket(team_id=..., title=..., description=...). Use subimageListLinearTeams first to resolve team_id if not known.Never auto-send without explicit confirmation. The digest is most useful as a chat answer first.
findingsCount > 0 regardless of severity. Turns the digest into a CSV.subimageGetRuleFindings output as a Markdown table. The system prompt in chat already forbids this for tool-derived data, and the markdown table produces a wall of text.subimageReadMe): see Domain 5 "Compliance & Security Findings" and Domain 6 "Ticket Management".Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub subimagesec/skills --plugin subimage-mcp