Skip to content
Back to skills

Sw Status

ASecurity

Shows current Specwright state for this worktree, the attached work, repo-wide active works, gate results, and lock status. Supports --reset, --cleanup, and --repair {unitId}.

  • 9 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added May 26, 2026
developmentgobashgit

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add Obsidian-Owl/specwright --skill sw-status --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Sw Status?

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

Security grade badge for Sw Status
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/obsidian-owl-sw-status/badge)](https://www.skillsdirectory.com/skills/obsidian-owl-sw-status)

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: sw-status
description: >-
  Shows current Specwright state for this worktree, the attached work, repo-wide
  active works, gate results, and lock status. Supports --reset, --cleanup, and
  --repair {unitId}.
argument-hint: "[--reset | --cleanup | --repair {unitId}]"
allowed-tools:
  - Read
  - Write
  - Bash
  - Glob
  - AskUserQuestion
---

# Specwright Status

## Goal

Tell the user what this worktree is attached to, what that work is doing, what
other works are active in the repository, which runtime layout is active, and
what the next action should be.

## Inputs

- `{projectArtifactsRoot}/config.json`
- `{worktreeStateRoot}/session.json`
- `{repoStateRoot}/work/*/workflow.json`
- `{workArtifactsRoot}/{selectedWork.id}/approvals.md` when a work is attached
- `{workDir}/review-packet.md` when the selected unit has reached verify or ship artifacts

## Outputs

- Formatted status display for the current session and selected work
- Repo-wide summary of active works and their owner worktrees
- In `--repair` mode: remediation outcome for the targeted shipped unit

## Constraints

**Display (HIGH freedom):**
- Print the resolved `projectArtifactsRoot`, `repoStateRoot`,
  `worktreeStateRoot`, and `workArtifactsRoot` before the session summary so
  tracked project artifacts and the active runtime layout are inspectable.
- Name the runtime layout explicitly: `project-visible` runtime roots under
  `.specwright-local/` are the recommended interactive default, while
  `git-admin` roots under `.git/specwright/` are compatibility mode.
- Show the current session first: `worktreeId`, mode, branch, and
  `attachedWorkId`.
- If the session is attached, show that work's status, unit/task progress, the
  selected work's target branch and latest freshness state, configured
  work-artifact publication mode when present, approval freshness reason,
  latest closeout or review-packet availability, review-packet presence, gates,
  and per-work lock freshness.
- Keep the operator vocabulary aligned with the primary adapter surfaces:
  attached work, branch validity, approval or closeout posture, live ownership,
  and next action.
- If the attached work is already owned by another live top-level worktree,
  surface that conflict explicitly and point the operator to `/sw-adopt`
  instead of implying that status can mutate ownership.
- Enumerate other active works discovered under `repoStateRoot/work/*`, along
  with their recorded owner worktrees and whether the owner still has a live
  top-level session.
- If no work is attached in this worktree, say so and suggest `/sw-design`.
- Keep the output concise.

**Non-interactive context (LOW freedom):**
- Follow `protocols/headless.md` when AskUserQuestion is unavailable.
- `--reset`: abort without confirmation and report that reset requires a human.
- `--cleanup`: report-only. List eligible work directories but do not delete
  them.
- `--repair`: report-only. Inspect the selected or uniquely matched work/unit,
  print what interactive repair would do, and never mutate workflow state in
  headless mode.

**Reset mode (LOW freedom):**
- `--reset` applies to the work attached to this worktree session.
- Confirm with the user before mutating anything.
- If confirmed: set the selected work's status to `abandoned`, clear that
  work's lock, clear its gates, and detach this session if it points at that
  work.
- Follow `protocols/state.md` for all mutations.

**Cleanup mode (MEDIUM freedom):**
- Scan `{repoStateRoot}/work/` for work directories.
- Exclude any work currently claimed by a live session from deletion choices.
- Present only non-attached work directories for deletion.
- Canonicalize `{repoStateRoot}/work/` and each selected candidate with
  `realpath` before removing anything.
- Verify each canonical candidate is a direct child of the canonical
  `{repoStateRoot}/work/` directory.
- If canonicalization fails, or a candidate escapes the allowed direct-child
  scope, skip it with a warning.
- Delete only the user-selected, verified paths.

**Repair mode (MEDIUM freedom):**
- `--repair {unitId}` first looks in the selected work, if one is attached.
- If no selected work is attached, or the unit is absent there, search
  repo-wide workflows for a unique matching `unitId`.
- If the match is ambiguous across works, stop and tell the user which work IDs
  conflict.
- Repair applies only to shipped units with `prNumber=null`.
- If `gh` confirms a merged PR, populate the owning work's `prNumber` and `prMergedAt` and report `repaired`.
- If no PR can be proven, offer the same three outcomes as before:
  `revert-to-building`, `mark-abandoned`, `force-shipped-with-note`.
- `force-shipped-with-note` appends the user's assertion to the owning
  `decisions.md`.
- If repo-wide inspection finds stale attachments without live top-level sessions, report them as stale attachments and never treat them as active owners.

## Protocol References

- `protocols/context.md` -- logical roots and session/work resolution
- `protocols/state.md` -- per-work workflow schema and mutation rules

## Failure Modes

| Condition | Action |
|---|---|
| no shared/session state can be resolved | tell the user to run `/sw-init` |
| selected workflow parse error | show the raw error and stop |
| stale per-work lock detected | offer to clear it with a warning |
| `--repair` target ambiguous across works | stop and list matching work IDs |

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.