Skip to content
Back to skills

Start

ASecurity

Use this skill when the user runs /start, says "start", "enable the SDLC workflow", "I want to build", "I want to fix", "set up", "get started", or otherwise signals they want to activate or re-enable the SDLC workflow. Handles three distinct paths based on marker state — fresh install (opt-in activation), re-enable after suspension (reconciliation), and already-enabled (hand off to /plan). Power users who already have an active plan can skip directly to /plan.

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
ai-agentspythonrustgojavashellbashnodegitapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add lantisprime/claude-sdlc --skill start --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Start?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Start
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lantisprime-start/badge)](https://www.skillsdirectory.com/skills/lantisprime-start)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: start
description: Use this skill when the user runs /start, says "start", "enable the SDLC workflow", "I want to build", "I want to fix", "set up", "get started", or otherwise signals they want to activate or re-enable the SDLC workflow. Handles three distinct paths based on marker state — fresh install (opt-in activation), re-enable after suspension (reconciliation), and already-enabled (hand off to /plan). Power users who already have an active plan can skip directly to /plan.
next_suggestions:
  - when: fresh_install_complete
    suggest: "review the draft plan below, then run /plan to sign it and unlock /analyze"
  - when: reenable_complete
    suggest: "run /plan to draft and sign the superseding REQ before editing"
  - when: already_enabled
    suggest: "run /plan to start a new task"
---

# Start — Opt-in Activation, Re-enable, and Task Intake

Read the marker state first. The path taken depends entirely on which marker files exist.

## Marker state dispatch

| State | Condition | Path |
|---|---|---|
| Fresh install | `.claude/sdlc/.enabled` absent AND `.claude/sdlc/.suspended` absent | Activate → Steps 0–4 |
| Suspended | `.claude/sdlc/.suspended` present | Re-enable → Steps R1–R5 |
| Already enabled | `.claude/sdlc/.enabled` present | Hand off to `/plan` |

Check `.claude/sdlc/.suspended` first. If present, go to the re-enable path even if `.enabled` also somehow exists — `.suspended` wins.

---

## PATH A — Fresh Install (Steps 0–4)

### Step 0 — Config check and auto-detection

Skip this step entirely if `config/tools.json` already exists.

Run the following detections silently — no prompts, just observe:

| Signal | Detected value |
|---|---|
| `.git` directory | `vcs: "git"` |
| `git remote get-url origin` | repo slug (`owner/repo`) |
| `.github/workflows` present | `ci: "github-actions"` |
| `.gitlab-ci.yml` present | `ci: "gitlab-ci"` |
| `.circleci/config.yml` present | `ci: "circleci"` |
| `Jenkinsfile` present | `ci: "jenkins"` |
| `package.json` present | `language: "node"` |
| `pyproject.toml` or `requirements.txt` | `language: "python"` |
| `go.mod` present | `language: "go"` |
| `Cargo.toml` present | `language: "rust"` |
| `pom.xml` or `build.gradle` | `language: "java"` |
| `jest` or `vitest` in devDependencies | `test.command` |
| `pytest` in pyproject.toml | `test.command` |
| `eslint` in devDependencies | `lint.command` |
| `ruff` in pyproject.toml | `lint.command` |
| Remote URL contains `github.com` | `tracker: "github"` |
| Remote URL contains `gitlab` | `tracker: "gitlab"` |
| Remote URL contains `bitbucket` | `tracker: "bitbucket"` |

Show detected values as facts, not questions. Then ask up to three prompts:

**Prompt 1 — Tracker confirm (always shown, pre-selected if detected):**
```
Issue tracker (inferred: GitHub Issues) — correct? [Y/n/override]
```
If remote is absent or ambiguous:
```
Which issue tracker does this project use?
A) GitHub Issues  B) GitLab  C) Jira  D) Linear  E) None
(detected: none) _
```

**Prompt 2 — Auth token (only if tracker ≠ None):**
```
Paste your <tracker> token (stored in config/tools.local.json, never committed).
Skip with Enter to omit: _
```

**Prompt 3 — Project slug (only if tracker detected but slug not parseable from remote):**
```
Project key or repo slug: _
```

Best case (GitHub/GitLab remote present): 1 prompt (token only).
Typical case (no remote): 3 prompts maximum.
Multi-team sign-off configuration: not surfaced here — deferred to `/configure`.

After prompts, show a diff of the proposed `config/tools.json` and `config/tools.local.json`. Write only on explicit confirmation. If the user declines, proceed to Step 1 without writing config — they can run `/configure` later.

### Step 1 — Create `.enabled` marker

```bash
mkdir -p .claude/sdlc
touch .claude/sdlc/.enabled
```

Hooks are now armed. This runs immediately after config is confirmed (or skipped).

### Step 2 — Task intake

Single prompt:
```
What are you building or fixing — one sentence.
> _
```

Auto-classify task type from keywords in the response:

| Keywords | Classification |
|---|---|
| add / build / create / implement / new | `new-build` |
| fix / bug / broken / patch / correct | `fix` |
| change / update / migrate / refactor / modify | `change-request` |
| ambiguous | Ask: "Is this a new feature, a bug fix, or a change to existing behavior? (feature/fix/change)" |

**Fix-fast eligibility check** — offer routing to `/fix-fast` only when all five hold:
- Classification is `fix`
- Description implies no UI/UX changes
- Description implies no API or schema changes
- File count implied: ≤ 2
- Size implied: tiny (≤ 50 lines)

If eligible, ask:
```
This looks like it may qualify for /fix-fast — a compressed path that skips Analyze and Design.
Eligibility: fix only, ≤ 2 files, ≤ 50 LOC, no API/schema changes, no UI changes.
Route to /fix-fast? [Y/n — if unsure, choose n and use the full flow]
```
If yes: tell the user to run `/fix-fast` with their description. Stop. Do not invoke fix-fast yourself.

### Step 3 — Auto-generate artifacts

**scope.md** — if `.claude/sdlc/scope.md` does not exist, create it from the description:
```
# Scope: <repo-slug or "this project">

## Summary
<one-sentence description from Step 2>

## In scope
- <heuristic: primary files or directories implied by description>

## Out of scope
- Anything not mentioned above
- Test infrastructure changes beyond what the task requires
- Documentation unless explicitly part of the task

**Status:** draft — review and confirm in /plan before treating as authoritative
```

**Plan artifact** — create `.claude/sdlc/plans/<slug>.md` using `templates/plan.md` with these fields pre-filled:

| Field | Source |
|---|---|
| `REQ-ID` | `REQ-001` (or next available `REQ-N` by scanning existing plan files) |
| `Classification` | auto-classified from Step 2 |
| `Stack` | detected in Step 0 |
| `In-scope files` | heuristic from description keywords — mark as `[suggested]` |
| `In-scope functions` | `TBD — refine in /plan` |
| `Out-of-scope` | standard safety list |
| `Estimate` | keyword-based: "add/build/create" → medium; "fix" → small; "change" → medium |
| `Status` | `draft` |

All auto-generated fields are marked `[suggested]` or `[draft]` — they require human confirmation in `/plan` before they are authoritative.

### Step 4 — "What this armed" summary

Print the activation summary, then display the plan inline:

```
[SDLC] Workflow enabled.

  Repo:    github.com/owner/my-app     (or: no remote detected)
  CI:      github-actions              (or: none detected)
  Stack:   python / pytest / ruff      (or: not detected)
  Tracker: GitHub Issues → owner/my-app

  config/tools.json              → written           (or: skipped — run /configure to set up)
  .claude/sdlc/scope.md          → created  [draft — review in /plan]
  .claude/sdlc/plans/<slug>.md   → REQ-001  [draft — review in /plan]
    classification: <type>                   [suggested]
    estimate:       <size>                   [suggested]
    in-scope files: <n> heuristic matches    [suggested — confirm in /plan]

Hooks now active:
  ✓ plan-gate        — blocks edits without a signed plan
  ✓ secret-scan      — catches credentials before they're written (always-on)
  ✓ diff-scope-check — warns if edits drift outside scope
  ✓ bash-safety      — flags destructive shell commands

Next: review the plan below, then run /plan to sign it.
All [draft] and [suggested] fields require your confirmation in /plan before they are authoritative.
```

Display the plan artifact inline. Hand off to `/plan` for review and sign-off. Do not invoke `/plan` yourself — print the hand-off message and stop.

---

## PATH B — Re-enable After Suspension (Steps R1–R5)

This path runs when `.claude/sdlc/.suspended` exists. Skip the config wizard entirely — config already exists.

### Step R1 — Run snapshot verification

Call `hooks/suspend-snapshot.sh verify`. The script outputs plan-keyed JSON to stdout.

If the script outputs `{"error": "no_snapshot", ...}`: inform the user:
```
[SDLC] Snapshot file not found. Cannot verify governance integrity.
Re-enabling without tamper detection. Enforcement will be active but no reconciliation is possible.
Continue? [Y/n]
```
If yes: skip to Step R5 (re-enable directly). If no: stop.

If the script outputs `{"error": "decryption_failed_refused"}` or `{"error": "key_expired_refused"}` or `{"error": "key_missing_refused"}`: the user already declined degraded mode inside the script. Print:
```
[SDLC] Re-enable cancelled. Workflow remains suspended.
```
Stop.

### Step R2 — Parse verify output

The JSON has this shape (from `suspend-snapshot.sh verify`):
```json
{
  "plans": {
    "REQ-001": {
      "changed_files": [...],
      "severity": "HIGH",
      "revert_candidates": [...]
    }
  },
  "clean_plan_count": 2,
  "degraded": false,
  "cap_warning": null
}
```

**Scope overflow cap warning:** if `cap_warning` is non-null, display it before showing any plan output:
```
[SDLC] WARNING: <cap_warning text>
Active plans exceeding the cap are not marked safe — they are deferred. Run /status after re-enable to review them.
```

Count changed plans (K = keys in `plans` where `changed_files` is non-empty).

- K = 0 → no governance changes → skip to Step R4 (clean path)
- K ≥ 1 → changed plans present → Step R3

### Step R3 — Per-plan reconciliation prompts

For each changed plan in `plans` (ordered by severity: HIGH first, then LOW), show:

```
━━ REQ-001  <slug>  [HIGH] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  Files modified during suspension:
    .claude/sdlc/gates/build-<slug>.md
    .claude/sdlc/sign-offs/REQ-001-qa.md
    src/auth/login.py

  Re-examining requirements...
```

Load the changed files for this plan (from `changed_files`), plus their one-hop artifact neighbors per RFC §7.3 rules, restricted to this plan's active artifacts. Produce a plain-language summary — no gate-file notation, no jargon.

Then show:
```
  Changes summary:
    • Build gate: QA sign-off was removed
    • src/auth/login.py: expanded from 120 → 190 lines
      (outside original REQ-001 scope of 3 files)
    • No schema or API changes detected

  Accept changes to REQ-001? [Y/n]
```

For plans with severity LOW (source drift only, no governance artifacts changed):
```
━━ REQ-003  <slug>  [LOW] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  Files modified during suspension (source drift only):
    src/ui/search.py

  Changes summary:
    • src/ui/search.py: 8-line addition within REQ-003 scope

  Accept changes to REQ-003? [Y/n]
```

If the user enters `n` on **any** plan: collect all rejected REQ-IDs. After all prompts complete, print:
```
  <REQ-ID> rejected. Workflow stays suspended.

  Revert these files and run /start to try again:
    <revert_candidates for each rejected plan>
```
`.suspended` marker remains. Snapshot is preserved. Stop.

If the clean plan count is non-zero, append after all per-plan prompts:
```
<N> plan(s) verified clean: <REQ-IDs>
```

**For accepted HIGH-severity plans** — propose REQ supersession (do not write the new plan file yet):

```
  Proposed: supersede REQ-001 → REQ-002.

  REQ-001 remains active. REQ-002 has not been written.

  To confirm:
    1. Run /plan — Claude will draft REQ-002 for your review.
    2. Sign REQ-002 in /plan as you would any new plan.
    3. REQ-001 is marked superseded only after REQ-002 is signed.
```

For accepted LOW-severity plans: no supersession proposed. Drift is surfaced in `/status`.

### Step R4 — Clean path (K = 0)

```
[SDLC] Resuming after suspension — no governance changes detected.

  Source files modified during suspension: <N>  [below escalation threshold]
  ⚠ Suspension drift pending review — run /status to see affected files.

  Workflow re-enabled.
```

(Omit the drift line if source changes are also zero.)

Snapshot is deleted: `rm .claude/sdlc/.suspension-snapshot.enc`

### Step R5 — Re-enable

```bash
mv .claude/sdlc/.suspended .claude/sdlc/.enabled
```

If snapshot still exists (governance changes accepted, supersession pending): leave it until REQ supersession is signed. Do not delete it here.

Print:
```
[SDLC] Workflow re-enabled. Enforcement is active.
plan-gate will require a signed plan before editing — sign the superseding REQ in /plan.
```

---

## PATH C — Already Enabled

If `.claude/sdlc/.enabled` exists and `.claude/sdlc/.suspended` is absent:

```
[SDLC] Workflow is already enabled.
Run /plan to start a new task or continue an existing one.
```

Hand off to `/plan` if the user also provided a task description. Otherwise stop.

---

## What this skill must NOT do

- Do not write plan artifacts in re-enable path — only propose supersession. `/plan` owns the plan file.
- Do not auto-run `/plan` after activation — print the hand-off message and let the user run it.
- Do not mark REQ-001 as superseded before the human signs REQ-002 in `/plan`.
- Do not delete the snapshot until: (a) clean path (K=0), or (b) all supersession sign-offs are confirmed.
- Do not skip the re-enable path even if the config wizard hasn't been run.

## Graceful degradation

- `hooks/suspend-snapshot.sh` not found → surface the error; offer to re-enable without integrity verification (Step R1 no-snapshot path).
- `config/tools.json` absent on fresh install → proceed without config; show "not configured" in the armed summary; prompt to run `/configure` to finish setup.
- `.claude/sdlc/plans/` absent → treat as no active plans; skip plan artifact creation in Step 3 for re-enable; still create scope.md and plan in fresh install.

## References

- `hooks/suspend-snapshot.sh` — verify mode called in Step R1
- `skills/plan/SKILL.md` — receives pre-fill context after Step 4 or after REQ supersession proposal
- `commands/fix-fast.md` — fix-fast eligibility rules
- `docs/rfcs/opt-in-activation-suspend-resume.md` §5 (fresh install) and §7 (re-enable)

Attribution

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

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.