Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

Back to skills

Onboarding

ASecurity

Produce the sdlc-graph tooling checklist — walk the plugin's dependency roster, report tool by tool what this session can actually invoke and what it cannot, print the install line for each gap, and say what a run does without it. Every tool on that roster is third-party and optional: the graph requires git and nothing else, and every absence is recorded in `skipped_gates[]` while the run continues. Invoked at the start of every sdlc-graph run, and by a human any time the question comes up. P...

10 stars
0 votes
0 copies
0 views
Added 9/22/2026
ai-agentsgoshellbashnodegit

Works with

claude codecli

Security Analysis

A100/100

Scanned 9/22/2026

Install to Claude Code

$npx -y skills add RonMizrahi/ai-sdlc-graph --skill onboarding --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Onboarding?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Onboarding
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ronmizrahi-onboarding/badge)](https://www.skillsdirectory.com/skills/ronmizrahi-onboarding)

More formats (shields.io, HTML) on the badges page.

Download Zip
Files
SKILL.md
---
name: onboarding
description: >-
  Produce the sdlc-graph tooling checklist — walk the plugin's dependency roster, report tool by tool
  what this session can actually invoke and what it cannot, print the install line for each gap, and
  say what a run does without it. Every tool on that roster is third-party and optional: the graph
  requires git and nothing else, and every absence is recorded in `skipped_gates[]` while the run
  continues. Invoked at the start of every sdlc-graph run, and by a human any time the question comes
  up. Purely advisory — it installs nothing, gates nothing, and never stops or delays a run.
when_to_use: >-
  at the start of an sdlc-graph run, what does sdlc-graph need installed, which graph tools am I
  missing, check my sdlc-graph tooling, why was that gate skipped, install the run viewer
disable-model-invocation: false
user-invocable: true
allowed-tools: Bash, Read
---

# sdlc-graph — the tooling checklist

## Goal

Answer one question, tool by tool: **which of the things a run would dispatch to can this session
actually invoke, and what does a run lose for each one it cannot?**

**Everything on the roster is third-party and optional.** The graph's only hard requirement is `git`.
Every other tool is somebody else's plugin or a capability built into Claude Code, dispatched rather
than copied — because a copied reviewer drifts and then reviews against a stale rulebook. Exactly one
of them ships in this bundle (`sdlc-graph-viewer`), and that one is a declared dependency of the
graph rather than a choice — it should already be present.

**Every absence is recorded in `skipped_gates[]` and the run continues.** Nothing is ever reported as
passed because its tool was missing, and the ledger is append-only: installing a tool later does not
retroactively pass a gate that ran without it.

## Use When

- **Every `sdlc-graph` run start.** `INTAKE` invokes this, always, before the run proceeds past it.
- A human asks what `sdlc-graph` needs, or why a finished run's report led with `skipped_gates[]`.

## Do Not Use When

- You want a *machine* set up — language toolchains, editors, containers. That is a different skill
  entirely; this one only looks at what this session can invoke for a graph run.

## Rules

1. **Advisory. This gates nothing, blocks nothing, and stops nothing.** It prints a checklist. A run
   behaves identically whether every row is green or every row is missing — the ledger, not this
   skill, is what records an absence. **It is never a human stop**: the graph has six and this is not
   one of them. Report and hand control straight back.
2. **It installs nothing, fetches nothing, enables nothing.** A skill cannot run `/plugin install` —
   that is a user command — and this one would not if it could. Print the line; the human runs it,
   whenever they like, including after the run. **The check is automatic; acting on it is not.**
   Never install, download, enable, or modify configuration on the reader's behalf, and never offer
   to: an unasked-for install is a change to somebody's machine that they did not choose.
3. **Quiet, and written only in the session.** The checklist is text in the conversation — it
   writes no file, touches no run directory, creates no report and changes no configuration. That is
   why `allowed-tools` is `Bash, Read` and carries nothing that can write: a checklist that leaves
   artefacts behind is a checklist someone has to clean up, and this one is paid for on every run.
   **When every row is invocable, say so in one line and stop** — the full list is for when there is
   something to act on, or when a human asked for it.
4. **Cheap enough to pay on every run.** One shell call, no network, no per-tool probing, output in
   the tens of lines. If this ever costs more than that, it has stopped being affordable at the place
   it is invoked from.
5. **`${CLAUDE_PLUGIN_ROOT}/docs/DEPENDENCIES.md` is the roster. This file keeps no copy of it.**
   Read it and walk **every** row. A second list here could disagree with the one a human reads, and
   the one a human reads would still be right — so there is only one.
6. **Test invocability, not the filesystem.** A file on disk is not a tool you can call.
7. **Never invent a marketplace name.** The roster carries the install lines and the rule for an
   uncertain source; follow what it says rather than guessing a plausible one.
8. **Never present an optional tool as a requirement**, and never name a plugin this bundle does not
   ship as something the graph depends on. It depends on `git`.

## Step 1 — read the roster

Read `${CLAUDE_PLUGIN_ROOT}/docs/DEPENDENCIES.md`. Its table gives, per tool: the exact id, whether
it ships in this bundle, the node that dispatches it, what a run does without it, and how to install
it. The section below the table names what is deliberately *not* a roster row, and why. **Everything
you report comes from there** — this skill contributes the detection and the formatting, nothing else.

## Step 2 — detect what is invocable

Two sources. They answer different halves, and together they cost one shell call.

| Source | What it settles |
|---|---|
| **The session's own skill/command inventory** — the skills this session lists as available, by exact id | **The authority.** Listed → invocable now. Not listed → not invocable now, whatever is on disk. |
| `claude plugin list --json` | *Why*, and what to do: absent from the output → not installed; present with `"enabled": false` → installed and switched off (`/plugin enable <id>`, no reinstall); present and enabled but missing from the session inventory → almost certainly installed after this session started, so it needs a restart, not an install. |

```bash
claude plugin list --json      # read once, reuse for every row — never shell out per tool
```

A CLI row (`gh`, `glab`) is settled by whether the command resolves, not by the plugin list.

> The `@marketplace` suffix on an installed id is ground truth for where that copy came from. Prefer
> it over anything written anywhere when the two disagree — and never copy a private or personal
> marketplace name out of it into a report.

## Step 3 — print the checklist

**If every row is invocable, the whole output is one line** — at run start nobody needs a table to
be told there is nothing to do:

> Tooling check — all N optional tools invocable. Nothing installed or changed.

**Otherwise**, open with what this is, because a reader who did not ask for it deserves to know why
it appeared and what it just did:

> Tooling check for this run — read-only. Nothing was installed, downloaded or changed.

One line per roster row, in the roster's own order, each marked **✓ invocable** or **✗ missing**.
Then, for the missing ones only:

- **what a run does without it** — the roster's own words, not a paraphrase of your own;
- **the install line**, verbatim from the roster. A plugin that is installed but *disabled* gets
  `/plugin enable <id>` instead — reinstalling it fixes nothing.

Close with this line, always:

> None of this blocks a run. Every absence is recorded in `skipped_gates[]`, carried into the plan at
> close-out, and led with in the final report — nothing is reported as passed because its tool was
> missing.

**And when at least one row is ✗ missing, close with the hand-back as well** — the decision is the
human's, and it is never taken for them:

> Installing is your call, not the graph's: **nothing here installs, downloads or enables anything
> on its own.** Run `/sdlc-graph:onboarding` whenever you want this list again with the exact
> install lines, then run the ones you want. The run continues either way.

That sentence is the whole shape of this skill at run start: **the check is automatic, the install
never is.** An agent that reads a missing row as licence to fetch, install, enable or "just set it
up quickly" has broken the one rule this file exists to hold.

Never print a verdict, a score, a readiness percentage, or anything a reader could mistake for a
gate. **There is no such thing as failing this checklist.**

### When you cannot confirm a source

If `claude plugin marketplace list` does not show the marketplace an install line names, do **not**
substitute another name and do not guess a fork. Say it plainly:

> `<tool>` is not invocable here. It is a public plugin, but this session cannot confirm which
> marketplace it came from — install it the same way you got your other plugins, then re-run
> `/sdlc-graph:onboarding`.

## Why `disable-model-invocation: false`

Deliberate, and the opposite of the graph's own setting.

**The graph invokes this at `INTAKE`, on every run.** A checklist that only a human could trigger
would be a checklist most runs never get, and the whole point is that the roster is answered once, up
front, instead of one ledger entry at a time as each gate discovers its tool is gone. Model
invocation is therefore required, not merely allowed.

**The safety is structural, not a trigger flag.** This skill reads two things and prints text: it
writes no state, evaluates no guard, and has no way to stop a run. `INTAKE` neither waits on its
result nor records anything from it, so the worst case of an unwanted invocation is some wasted
output — never a stalled run, and never a seventh human stop. `sdlc-graph` itself sets
`disable-model-invocation: true` because *starting an entire SDLC* on a description match is a real
hazard; printing a tooling checklist is not.

`user-invocable: true` keeps `/sdlc-graph:onboarding` one keystroke away for the person who wants it
outside a run.

## References

- **`${CLAUDE_PLUGIN_ROOT}/docs/DEPENDENCIES.md`** — the roster. The only list.
- `${CLAUDE_PLUGIN_ROOT}/skills/sdlc-graph/graph/nodes.md` — each node's `requires` row, if someone
  asks *why* a tool is needed where it is.
- `${CLAUDE_PLUGIN_ROOT}/skills/sdlc-graph/graph/state.md` § the skipped-gate ledger — what happens
  to an absence during a run.

Attribution

RonMizrahiRonMizrahi
View sourceMore from RonMizrahi →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1066601 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

686011 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

651 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →