Recurring (weekly) Aikido security-feed review for a repo — pulls all open findings via the Aikido MCP, builds a severity/type dashboard with SLA status, groups findings into action groups with a recommendation each, and lets the USER decide per group (nothing is fixed or ignored without their pick); ends by offering to schedule the next run. For tech leads reviewing their repo's security posture on a cadence, not for triaging a single PR. Use when asked to "review aikido findings", "weekly a...
Scanned 9/1/2026
Install to Claude Code
npx -y skills add lifinance/contracts --skill aikido-weekly-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Aikido Weekly Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lifinance-aikido-weekly-review)More formats (shields.io, HTML) on the badges page.
---
name: aikido-weekly-review
description: Recurring (weekly) Aikido security-feed review for a repo — pulls all open findings via the Aikido MCP, builds a severity/type dashboard with SLA status, groups findings into action groups with a recommendation each, and lets the USER decide per group (nothing is fixed or ignored without their pick); ends by offering to schedule the next run. For tech leads reviewing their repo's security posture on a cadence, not for triaging a single PR. Use when asked to "review aikido findings", "weekly aikido review", "aikido security review", "what's open in aikido", or when a scheduled task fires with /aikido-weekly-review.
usage: /aikido-weekly-review [repo-name] — repo defaults to the current git repo
---
# Aikido Weekly Review
Cadence review of the whole Aikido feed for one repo. Produces a dashboard + grouped
suggestions, waits for the user's per-group decisions, executes only those, then offers
to schedule the next run. **Suggest-first is the contract: this command never fixes or
ignores anything the user hasn't picked.** Deep SAST triage mechanics live in
`/aikido-address-findings` — this command orchestrates, it does not duplicate them.
---
## Preflight
- Needs the Aikido MCP (`aikido_issues_list`). Verify availability exactly as described
in the Preflight section of `.agents/commands/aikido-address-findings.md` (the
`aikido_full_scan` test call, and its `/aikido:setup` fallback message on failure).
- Derive the repo name from `gh repo view --json name -q .name` unless overridden by the
argument. Never hardcode: forks share code under different Aikido repo names
(`contracts` vs `contracts-tron`).
## Step 1 — Pull the full feed
Call `aikido_issues_list` with `repo_name` and NO `issue_types` filter, paginating
(`page: 0, 1, …`) until a page returns fewer than 25 issues. Then two extra calls with
`out_of_sla: true` and `sla_due_soon: true` to mark SLA state per issue — paginated the
same way (the 25/page limit applies to every variant of this call).
`issue_id` values are numbers in the feed but must be passed back as **strings** to
`aikido_ignore_issue`.
## Step 2 — Dashboard
Group by `issue_type` × `issue_severity_label` and render:
```text
| Type | Crit | High | Med | Low | Out of SLA | Due soon |
|---------------|------|------|-----|-----|------------|----------|
| open_source | . | . | . | . | . | . |
| sast | . | . | . | . | . | . |
| leaked_secret | . | . | . | . | . | . |
| iac / other | . | . | . | . | . | . |
```
Follow with the top items: every critical/high by name (CVE/package or rule/file:line),
and everything out-of-SLA regardless of severity.
## Step 3 — Group into action groups and suggest (do not act)
Exception first: **leaked_secret** findings are surfaced immediately and individually
(file + secret type + rotation note) at the top of the output — a value that reached a
commit is compromised and needs rotation; never fold these into a group or suggest
ignoring them.
Group everything else into decision-sized units — one group = one coherent action a
human can accept or reject as a whole:
- **open_source** → by package (one version bump resolves all its CVEs). Note installed
vs recommended version and direct-vs-transitive (check `package.json`).
- **sast** → by rule × file-family (e.g. "path traversal × script/tasks propose*
scripts"). Where a false-positive catalog exists
(`.agents/references/aikido-false-positive-catalog.md`, contracts-only), name the
matching pattern; without a catalog match, the only suggestions allowed are Fix or
Discuss — never Ignore.
- **iac / scm_security / actions** → by rule (all unpinned actions together, all
persist-credentials together, …).
For each group output: findings covered (ids + count), severity range, SLA state, a
one-line **suggested action** (Fix via the relevant `/aikido-address-findings` Phase 4
recipe / Ignore with the catalog reason / Discuss), and a one-line why. Then STOP and
ask the user to decide per group (accept the suggestion, pick a different action, or
defer) — a numbered list they can answer compactly ("1,3 fix; 2 ignore; rest defer") or
the harness's question UI.
## Step 4 — Execute only the accepted groups
- Per accepted group, offer two execution modes where the harness supports background
task chips: **do it in this session now**, or **spawn a task chip per group** (a
self-contained prompt naming the repo, finding ids, and chosen action) so each fix
becomes its own session/PR the user starts with one click. Default to in-session when
chips are unavailable.
- Fixes follow the `/aikido-address-findings` Phase 4 recipes (that command's feed mode
queries SAST only, so apply dependency/actions recipes directly rather than invoking
it for those buckets). Check open PRs first — a bump may already be in flight.
- Keep SAST execution scoped to the accepted group: run
`/aikido-address-findings <issue-id> <repo>` per finding in the group. The whole-repo
`/aikido-address-findings all <repo>` hand-off is allowed only when the user accepted
every SAST group — it re-triages the full SAST feed and would otherwise touch
deferred/rejected groups.
- Accepted ignores go through `aikido_ignore_issue` with a reason naming the
call-site/context justification, not a generic dismissal.
- Deferred/rejected groups are left untouched and listed as such in the report.
## Step 5 — Report
End with four lists: **fixed/PR'd** (links), **ignored with reason** (id + reason),
**deferred by user**, and **escalated** (secrets, plus any group the user routed to
Discuss or left undecided). If nothing is open: say so — that IS the weekly report.
## Step 6 — Offer the next run (scheduling)
Ask which the user wants (skip if this run was itself triggered by a schedule):
1. **Scheduled task (preferred)** — create a weekly recurring task that runs
`/aikido-weekly-review` in this repo (Claude Code: the `/schedule` flow or the
scheduled-tasks tooling available in the session; pick a weekday morning in the
user's timezone). Confirm the created schedule back to the user.
2. **Calendar reminder** — if a calendar connector is available, create a weekly
30-minute "Aikido review — <repo>" event with a description linking
https://app.aikido.dev and naming this command.
3. **Neither** — fine; mention the command name so they can invoke it ad hoc.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!