Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .agents/skills/speckit-analyze/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: speckit-analyze
description: Analyze consistency across the active spec, plan, and tasks.
---

# Speckit Analyze

Use this skill for the `$speckit-analyze` phase.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add a minimal
`.specify/scripts/bash/check-prerequisites.sh` only when absent. It must support
`--json --require-tasks --include-tasks`.

## Workflow

1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks`.
Stop if `spec.md`, `plan.md`, or `tasks.md` is missing.
2. Read the spec, plan, tasks, constitution if present, and referenced
supporting docs.
3. Perform read-only analysis. Do not modify files.
4. Report missing requirement coverage, spec-plan conflicts, task scope creep,
duplicated or vague tasks, ordering problems, and unverifiable acceptance
criteria.
5. Order findings by severity with file or section references. If no issues are
found, say so and identify residual risk.
6. Recommend the next Speckit command.

30 changes: 30 additions & 0 deletions .agents/skills/speckit-checklist/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: speckit-checklist
description: Generate a focused quality checklist for the active specification.
---

# Speckit Checklist

Use this skill for the `$speckit-checklist` phase. Treat the user's prompt as
the checklist focus; infer a useful focus if none is provided.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add
`.specify/templates/checklist-template.md` and
`.specify/scripts/bash/check-prerequisites.sh` only when missing.

## Workflow

1. Run `.specify/scripts/bash/check-prerequisites.sh --json`. Stop if no active
feature or spec exists.
2. Read the active spec, plan if present, and constitution if present.
3. Create `FEATURE_DIR/checklists/<focus>.md` from the checklist template when
available.
4. Write validation questions for requirements completeness, clarity,
consistency, and acceptance readiness. Do not write implementation tasks.
5. Mark items complete only when the user asked for validation and the current
artifacts satisfy the item.
6. Report the checklist path and high-risk gaps.

29 changes: 29 additions & 0 deletions .agents/skills/speckit-clarify/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
name: speckit-clarify
description: Clarify underspecified feature requirements before technical planning.
---

# Speckit Clarify

Use this skill for the `$speckit-clarify` phase.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add a minimal
`.specify/scripts/bash/check-prerequisites.sh` only when absent. It must read
`.specify/feature.json`, print JSON with `FEATURE_DIR`, and honor required-file
checks.

## Workflow

1. Run `.specify/scripts/bash/check-prerequisites.sh --json`. Stop if no active
feature or `spec.md` exists.
2. Read `FEATURE_DIR/spec.md` and the constitution if present.
3. Identify planning-blocking ambiguities in scope, actors, permissions, data,
compliance, failure behavior, and user experience.
4. Ask up to five concise questions, using multiple choice where possible.
5. Add a dated `## Clarifications` section to the spec, record answers, and
revise affected requirements.
6. Report clarification count and readiness for `$speckit-plan`.

30 changes: 30 additions & 0 deletions .agents/skills/speckit-constitution/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: speckit-constitution
description: Create or update the Spec Kit project constitution.
---

# Speckit Constitution

Use this skill for the `$speckit-constitution` phase.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add missing templates and minimal helper
scripts under `.specify/scripts/bash/` only when absent:
`check-prerequisites.sh`, `create-new-feature.sh`, `setup-plan.sh`,
`setup-tasks.sh`, and `update-agent-context.sh`. The helpers must support
active feature lookup from `.specify/feature.json`, JSON output, and required
file checks. Do not overwrite existing Spec Kit files.

## Workflow

1. Read `.specify/templates/constitution-template.md` and any existing
`.specify/memory/constitution.md`.
2. Derive concrete project principles, testing standards, delivery workflow,
review rules, governance, and amendment rules from the user request.
3. Write `.specify/memory/constitution.md` with no unresolved placeholders.
4. Check the spec, plan, and tasks templates for obvious constitution alignment
notes, but do not make unrelated edits.
5. Report the constitution path and readiness for `$speckit-specify`.

34 changes: 34 additions & 0 deletions .agents/skills/speckit-implement/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
name: speckit-implement
description: Implement the active Spec Kit task list.
---

# Speckit Implement

Use this skill for the `$speckit-implement` phase.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add a minimal
`.specify/scripts/bash/check-prerequisites.sh` only when absent. It must support
`--json --require-tasks --include-tasks` and return `FEATURE_DIR`,
`SPEC_FILE`, `PLAN_FILE`, and `TASKS_FILE`.

## Workflow

1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks`.
Stop if the spec, plan, or tasks file is missing.
2. Read the active spec, plan, tasks, constitution, and supporting docs.
3. Execute incomplete tasks from `tasks.md` in dependency order. Run `[P]` tasks
in parallel only when they touch independent files and the environment allows
it.
4. Keep implementation scope limited to the task list and active spec.
5. Mark tasks complete in `tasks.md` after implementation and relevant
validation.
6. Run the smallest meaningful tests required by the task, plan, or repository
conventions. Report exact blockers for checks that cannot run.
7. Stop for conflicts, unactionable tasks, or decisions missing from the spec.
8. Finish with completed task ids, changed files, validation results, and
remaining incomplete tasks.

36 changes: 36 additions & 0 deletions .agents/skills/speckit-plan/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
name: speckit-plan
description: Create a technical implementation plan for the active specification.
---

# Speckit Plan

Use this skill for the `$speckit-plan` phase. Treat the user's prompt as
technical preferences and constraints.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add missing
`.specify/scripts/bash/check-prerequisites.sh`,
`.specify/scripts/bash/setup-plan.sh`, and
`.specify/scripts/bash/update-agent-context.sh` only when absent. The minimal
`setup-plan.sh` must locate the active feature, copy
`.specify/templates/plan-template.md` to `FEATURE_DIR/plan.md` if needed, and
print JSON with `FEATURE_DIR`, `SPEC_FILE`, and `PLAN_FILE`.

## Workflow

1. Run `.specify/scripts/bash/setup-plan.sh --json`. Stop if no active spec
exists.
2. Read the spec, plan template or existing plan, constitution, and supporting
docs in `FEATURE_DIR`.
3. Fill `FEATURE_DIR/plan.md` with implementation context, constraints,
constitution compliance, project structure, and phase gates.
4. Create supporting docs when relevant: `research.md`, `data-model.md`,
`contracts/`, and `quickstart.md`.
5. Keep scope aligned to the spec; send product-scope changes back to
`$speckit-specify`.
6. Run `.specify/scripts/bash/update-agent-context.sh` if present.
7. Report updated files, unresolved risks, and readiness for `$speckit-tasks`.

39 changes: 39 additions & 0 deletions .agents/skills/speckit-specify/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: speckit-specify
description: Create or update a feature specification from a natural language description.
---

# Speckit Specify

Use this skill for the `$speckit-specify` phase. The user's prompt is the
feature description; if it is empty, ask for the description before proceeding.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add missing
`.specify/templates/spec-template.md`,
`.specify/templates/checklist-template.md`,
`.specify/scripts/bash/create-new-feature.sh`, and
`.specify/scripts/bash/check-prerequisites.sh` only when absent. The feature
script must create one `specs/<number>-<short-name>/spec.md`, copy the spec
template, write `.specify/feature.json`, and print JSON with `FEATURE_DIR` and
`SPEC_FILE`.

## Workflow

1. Generate a concise 2-4 word feature short name.
2. Run `.specify/scripts/bash/create-new-feature.sh --json "<description>"` or
the minimal equivalent from Bootstrap.
3. Read `.specify/templates/spec-template.md` and
`.specify/memory/constitution.md` if present.
4. Write `FEATURE_DIR/spec.md` focused on what users need and why. Avoid
implementation details. Include user scenarios, functional requirements,
success criteria, assumptions, edge cases, and key entities when relevant.
5. Use at most three `[NEEDS CLARIFICATION: ...]` markers for critical unknowns
with no reasonable default.
6. Create `FEATURE_DIR/checklists/requirements.md`, validate the spec, and
iterate up to three times for fixable gaps.
7. Report `FEATURE_DIR`, `SPEC_FILE`, checklist status, and readiness for
`$speckit-clarify` or `$speckit-plan`.

33 changes: 33 additions & 0 deletions .agents/skills/speckit-tasks/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
name: speckit-tasks
description: Generate an actionable task list from the active implementation plan.
---

# Speckit Tasks

Use this skill for the `$speckit-tasks` phase.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add missing
`.specify/scripts/bash/check-prerequisites.sh` and
`.specify/scripts/bash/setup-tasks.sh` only when absent. The minimal
`setup-tasks.sh` must require `spec.md` and `plan.md`, create
`FEATURE_DIR/tasks.md` from `.specify/templates/tasks-template.md` if needed,
and print JSON with `FEATURE_DIR`, `PLAN_FILE`, and `TASKS_FILE`.

## Workflow

1. Run `.specify/scripts/bash/setup-tasks.sh --json`. Stop if the spec or plan
is missing.
2. Read the spec, plan, and supporting docs.
3. Generate `FEATURE_DIR/tasks.md` with `T001` style task ids, user-story
phases, dependency notes, and `[P]` markers for independent parallel tasks.
4. Include exact file paths where practical. Put test tasks before
implementation tasks whenever tests are required by the spec, constitution,
or plan.
5. Keep each user story independently implementable and testable.
6. Report task count, parallelizable count, and readiness for
`$speckit-analyze`, `$speckit-taskstoissues`, or `$speckit-implement`.

101 changes: 101 additions & 0 deletions .agents/skills/speckit-taskstoissues/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
---
name: speckit-taskstoissues
description: Create GitHub issues from the active Spec Kit tasks list.
---

# Speckit Tasks To Issues

Use this skill for the `$speckit-taskstoissues` phase. Support `--dry-run` by
printing the `gh issue create` commands without creating issues.

## Bootstrap

If `.specify` is absent, create `.specify/memory`, `.specify/templates`,
`.specify/scripts/bash`, and `specs`. Add a minimal
`.specify/scripts/bash/check-prerequisites.sh` only when absent. It must support
`--json --require-tasks --include-tasks` and return `FEATURE_DIR`.

## Workflow

1. Run `.specify/scripts/bash/check-prerequisites.sh --json --require-tasks --include-tasks`.
Stop if `FEATURE_DIR/tasks.md` is missing.
2. Verify `gh` is installed and authenticated unless running `--dry-run`.
3. Parse task lines from `tasks.md` that start with a Markdown task checkbox and
contain a `T###` task id.
4. Create one issue per task with title
`[SpecKit] <feature-dir-name>: <task-id> <task>`.
5. Before creating, check all repository issues by exact title; warn and skip
already-created issues.
6. Always include `--assignee ExtraToast`.
7. Pick exactly one best-fit existing repo label from
`enhancement`, `bug`, or `documentation`. Never invent labels; if the chosen
label does not exist, warn and omit `--label`.
8. Use this inline helper shape; do not add a script file:

```bash
dry_run=false
case " $ARGUMENTS " in *" --dry-run "*) dry_run=true ;; esac

feature_dir="<FEATURE_DIR from check-prerequisites>"
tasks_file="$feature_dir/tasks.md"
feature_name="$(basename "$feature_dir")"

label_exists() {
gh label list --limit 1000 --json name --jq '.[].name' | grep -Fxq "$1"
}

issue_exists() {
gh issue list --state all --search "$1 in:title" --json title --jq '.[].title' | grep -Fxq "$1"
}

while IFS= read -r task_line; do
task_id="$(printf '%s\n' "$task_line" | grep -Eo 'T[0-9]{3,}' | head -n 1)"
task_text="$(printf '%s\n' "$task_line" |
sed -E 's/^- \[[ xX]\][[:space:]]*//; s/\[P\][[:space:]]*//g; s/T[0-9]{3,}[[:space:]]*//; s/^[[:space:]]+//')"
[ -n "$task_id" ] || continue
[ -n "$task_text" ] || continue

title="[SpecKit] ${feature_name}: ${task_id} ${task_text}"
body="$(cat <<EOF
## Task

${task_line}

## Source

- Feature: ${feature_dir}
- Tasks: ${tasks_file}
EOF
)"

lower="$(printf '%s\n' "$task_text" | tr '[:upper:]' '[:lower:]')"
label="enhancement"
case "$lower" in
*bug*|*fix*|*regression*|*failure*|*defect*) label="bug" ;;
*doc*|*docs*|*documentation*|*readme*|*runbook*|*guide*) label="documentation" ;;
esac

label_args=()
if label_exists "$label"; then
label_args=(--label "$label")
else
printf 'WARN: label %s does not exist; omitting --label for %s\n' "$label" "$title" >&2
fi

if issue_exists "$title"; then
printf 'WARN: issue already exists, skipping: %s\n' "$title" >&2
continue
fi

if [ "$dry_run" = true ]; then
printf 'gh issue create --title %q --body %q --assignee ExtraToast' "$title" "$body"
[ "${#label_args[@]}" -eq 0 ] || printf ' --label %q' "$label"
printf '\n'
else
gh issue create --title "$title" --body "$body" --assignee ExtraToast "${label_args[@]}"
fi
done < <(grep -E '^- \[[ xX]\].*T[0-9]{3,}' "$tasks_file")
```

9. Report created, skipped, and dry-run counts.

Loading
Loading