superdev-cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +21 -0
- package/.codex-plugin/plugin.json +27 -0
- package/CODE_OF_CONDUCT.md +109 -0
- package/CONTRIBUTING.md +205 -0
- package/LICENSE +202 -0
- package/NOTICE +11 -0
- package/README.md +1051 -0
- package/SECURITY.md +135 -0
- package/THIRD-PARTY-NOTICES.md +253 -0
- package/hooks/hooks.json +61 -0
- package/hooks/run.mjs +88 -0
- package/package.json +65 -0
- package/references/confidentiality.md +48 -0
- package/references/evidence-and-risk.md +73 -0
- package/references/operating-model.md +105 -0
- package/references/platform-capabilities.md +51 -0
- package/references/project-record.md +91 -0
- package/references/provider-contracts.md +102 -0
- package/scripts/doctor/doctor.mjs +539 -0
- package/scripts/privacy/scan-history.mjs +163 -0
- package/scripts/privacy/scan.mjs +368 -0
- package/scripts/validate/README.md +94 -0
- package/scripts/validate/common.mjs +149 -0
- package/scripts/validate/data-model.mjs +225 -0
- package/scripts/validate/dependencies.mjs +69 -0
- package/scripts/validate/docs-templates.mjs +99 -0
- package/scripts/validate/footprint.mjs +78 -0
- package/scripts/validate/imports.mjs +61 -0
- package/scripts/validate/manifests.mjs +173 -0
- package/scripts/validate/markdown.mjs +123 -0
- package/scripts/validate/migrations.mjs +187 -0
- package/scripts/validate/no-tests.mjs +136 -0
- package/scripts/validate/privacy.mjs +115 -0
- package/scripts/validate/record-links.mjs +127 -0
- package/scripts/validate/skill-commands.mjs +190 -0
- package/scripts/validate/skills.mjs +112 -0
- package/scripts/validate/specification.mjs +88 -0
- package/scripts/validate/style.mjs +78 -0
- package/scripts/validate/validate-all.mjs +175 -0
- package/skills/debug/SKILL.md +68 -0
- package/skills/decision/SKILL.md +99 -0
- package/skills/docs/SKILL.md +86 -0
- package/skills/docs/assets/fragments/api/events.md +14 -0
- package/skills/docs/assets/fragments/api/graphql.md +14 -0
- package/skills/docs/assets/fragments/api/local-only.md +13 -0
- package/skills/docs/assets/fragments/api/rest.md +13 -0
- package/skills/docs/assets/fragments/api/rpc.md +13 -0
- package/skills/docs/assets/fragments/async/event-bus.md +13 -0
- package/skills/docs/assets/fragments/async/none.md +11 -0
- package/skills/docs/assets/fragments/async/platform-jobs.md +13 -0
- package/skills/docs/assets/fragments/async/queue.md +13 -0
- package/skills/docs/assets/fragments/async/scheduler.md +13 -0
- package/skills/docs/assets/fragments/auth/detected-provider.md +15 -0
- package/skills/docs/assets/fragments/auth/neutral-base.md +14 -0
- package/skills/docs/assets/fragments/data/document.md +13 -0
- package/skills/docs/assets/fragments/data/external-saas.md +13 -0
- package/skills/docs/assets/fragments/data/key-value.md +13 -0
- package/skills/docs/assets/fragments/data/none.md +12 -0
- package/skills/docs/assets/fragments/data/sql-orm.md +13 -0
- package/skills/docs/assets/fragments/data/sql-plain.md +13 -0
- package/skills/docs/assets/fragments/env/conventional.md +13 -0
- package/skills/docs/assets/fragments/env/envx.md +13 -0
- package/skills/docs/assets/fragments/env/managed-platform.md +13 -0
- package/skills/docs/assets/fragments/env/none.md +11 -0
- package/skills/docs/assets/fragments/ui/api-only.md +13 -0
- package/skills/docs/assets/fragments/ui/cli.md +14 -0
- package/skills/docs/assets/fragments/ui/desktop.md +14 -0
- package/skills/docs/assets/fragments/ui/mobile.md +14 -0
- package/skills/docs/assets/fragments/ui/web.md +14 -0
- package/skills/docs/assets/templates/adr.md +62 -0
- package/skills/docs/assets/templates/api.md +30 -0
- package/skills/docs/assets/templates/architecture.md +52 -0
- package/skills/docs/assets/templates/change-impact-drift-report.md +29 -0
- package/skills/docs/assets/templates/compliance.md +29 -0
- package/skills/docs/assets/templates/data-schema.md +43 -0
- package/skills/docs/assets/templates/feature.md +43 -0
- package/skills/docs/assets/templates/foundations.md +55 -0
- package/skills/docs/assets/templates/jobs-webhooks.md +36 -0
- package/skills/docs/assets/templates/module-inventory.md +19 -0
- package/skills/docs/assets/templates/module.md +50 -0
- package/skills/docs/assets/templates/nfr.md +22 -0
- package/skills/docs/assets/templates/observability.md +28 -0
- package/skills/docs/assets/templates/pages-ui-actions.md +47 -0
- package/skills/docs/assets/templates/project-summary.md +44 -0
- package/skills/docs/assets/templates/roles-permissions.md +26 -0
- package/skills/docs/assets/templates/test-plan.md +23 -0
- package/skills/docs/assets/templates/workflow-state-machine.md +43 -0
- package/skills/docs/references/adr-authoring.md +24 -0
- package/skills/docs/references/apis-and-data.md +23 -0
- package/skills/docs/references/capability-fragments.md +25 -0
- package/skills/docs/references/change-tracking.md +62 -0
- package/skills/docs/references/diagrams.md +31 -0
- package/skills/docs/references/discovery.md +59 -0
- package/skills/docs/references/edge-cases.md +45 -0
- package/skills/docs/references/foundations-modules.md +18 -0
- package/skills/docs/references/ingestion.md +52 -0
- package/skills/docs/references/initialize-adopt.md +25 -0
- package/skills/docs/references/module-decomposition.md +38 -0
- package/skills/docs/references/profiles.md +60 -0
- package/skills/docs/references/quality-attributes.md +27 -0
- package/skills/docs/references/reverse-engineer.md +21 -0
- package/skills/docs/references/spec-depths.md +31 -0
- package/skills/docs/references/summarize.md +18 -0
- package/skills/docs/references/surfaces-and-actions.md +24 -0
- package/skills/docs/references/validation.md +47 -0
- package/skills/docs/references/workflows-and-jobs.md +25 -0
- package/skills/docs/scripts/ingest.mjs +984 -0
- package/skills/docs/scripts/profile-detect.mjs +299 -0
- package/skills/docs/scripts/screen.mjs +96 -0
- package/skills/docs/scripts/template-lint.mjs +143 -0
- package/skills/docs/scripts/validate-docs.mjs +363 -0
- package/skills/doctor/SKILL.md +167 -0
- package/skills/feature/SKILL.md +132 -0
- package/skills/init/SKILL.md +137 -0
- package/skills/project/SKILL.md +261 -0
- package/skills/project/references/commands.md +213 -0
- package/skills/resume/SKILL.md +79 -0
- package/skills/review/SKILL.md +91 -0
- package/skills/status/SKILL.md +85 -0
- package/skills/task/SKILL.md +183 -0
- package/src/cli/product-map.mjs +468 -0
- package/src/cli/render.mjs +544 -0
- package/src/cli.mjs +2774 -0
- package/src/cloud/crypto.mjs +118 -0
- package/src/cloud/merge.mjs +186 -0
- package/src/cloud/policy.mjs +115 -0
- package/src/cloud/sync.mjs +512 -0
- package/src/cloud/transport.mjs +116 -0
- package/src/db/connect.mjs +189 -0
- package/src/db/maintenance.mjs +419 -0
- package/src/db/migrate.mjs +188 -0
- package/src/db/migrations/001_initial.sql +1024 -0
- package/src/db/migrations/002_docs_coverage.sql +126 -0
- package/src/db/migrations/003_memory_retrieval_and_integrity.sql +168 -0
- package/src/db/migrations/004_task_categories.sql +59 -0
- package/src/db/migrations/005_executable_evidence.sql +32 -0
- package/src/db/migrations/006_module_and_feature_boundaries.sql +27 -0
- package/src/db/migrations/007_drop_redundant_module_users.sql +13 -0
- package/src/db/migrations/008_changes_assumptions_test_plans_api_services.sql +166 -0
- package/src/db/migrations/009_retired_documents.sql +54 -0
- package/src/db/migrations/010_test_plan_evidence.sql +20 -0
- package/src/db/migrations/011_criterion_waiver.sql +13 -0
- package/src/db/migrations/012_synchronization.sql +56 -0
- package/src/db/store.mjs +327 -0
- package/src/decisions/record.mjs +167 -0
- package/src/docs/proposals.mjs +871 -0
- package/src/docs/render.mjs +1424 -0
- package/src/docs/templates.mjs +1281 -0
- package/src/features/acceptance.mjs +315 -0
- package/src/features/specify.mjs +248 -0
- package/src/init/discovery.mjs +901 -0
- package/src/init/index.mjs +784 -0
- package/src/init/questions.mjs +562 -0
- package/src/memory/benchmark.mjs +171 -0
- package/src/memory/capture.mjs +135 -0
- package/src/memory/consolidate.mjs +255 -0
- package/src/memory/index.mjs +810 -0
- package/src/model/ids.mjs +185 -0
- package/src/model/screening.mjs +150 -0
- package/src/model/toolkit.mjs +258 -0
- package/src/model/vocabulary.mjs +190 -0
- package/src/product/assumptions.mjs +120 -0
- package/src/product/changes.mjs +180 -0
- package/src/product/test-plans.mjs +183 -0
- package/src/progress/index.mjs +1364 -0
- package/src/runtime/harness.mjs +264 -0
- package/src/runtime/hooks.mjs +1021 -0
- package/src/runtime/identity.mjs +305 -0
- package/src/runtime/resume.mjs +343 -0
- package/src/runtime/session.mjs +679 -0
- package/src/runtime/version.mjs +315 -0
- package/src/service/assets/control-center.html +206 -0
- package/src/service/assets/control-center.manifest.json +7 -0
- package/src/service/manage.mjs +542 -0
- package/src/service/mutations.mjs +860 -0
- package/src/service/read-model.mjs +1557 -0
- package/src/service/server.mjs +783 -0
- package/src/tasks/categories.mjs +154 -0
- package/src/tasks/derive.mjs +977 -0
- package/src/tasks/lifecycle.mjs +830 -0
- package/src/verify/index.mjs +236 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: resume
|
|
3
|
+
description: Rebuild working context from the Superdev database after a break, a new session, a handoff, or a compaction. Use for "continue where we left off", "pick up yesterday's work", "resume", "what was I doing?", or at the start of any session where a lifecycle hook did not run. Loads the active task, its feature and contract, governing decisions, blockers, pending documentation proposals and the recorded next action, searches local memory for the session outcome and handoff, verifies all of it against the live repository, and proposes the exact next action. Reads from records rather than from a memory of the previous conversation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Resume
|
|
7
|
+
|
|
8
|
+
The next agent resumes from the database, not from the conversation. Anything
|
|
9
|
+
you cannot trace to a record or to live repository evidence is a guess, and it
|
|
10
|
+
gets labeled as one.
|
|
11
|
+
|
|
12
|
+
`SD` means the installed `superdev` command, with `--root <project>` on
|
|
13
|
+
every call.
|
|
14
|
+
|
|
15
|
+
## Steps
|
|
16
|
+
|
|
17
|
+
1. **Load the handoff.** `SD resume --json`. It carries the current objective,
|
|
18
|
+
the active task and feature, the last verified result, branch and HEAD,
|
|
19
|
+
decisions encountered, blockers, scope changes, pending documentation
|
|
20
|
+
updates, and the exact next action.
|
|
21
|
+
2. **Load the surrounding state.** `SD status --json` for progress and open
|
|
22
|
+
work. `SD task show <TASK-id>` for the active task's contract links,
|
|
23
|
+
dependencies, activity and evidence.
|
|
24
|
+
3. **Search memory for context the records do not carry.**
|
|
25
|
+
`SD memory search "<topic>"` returns session outcomes, facts,
|
|
26
|
+
blockers, questions and handoffs, with their links. Memory is recall, not
|
|
27
|
+
authority: verify a recalled fact against the current specification,
|
|
28
|
+
decision, code or evidence before acting on it, and say which check you ran.
|
|
29
|
+
4. **Verify against live reality.** Does HEAD match what the record says was
|
|
30
|
+
verified? Are the files a completion claimed present? Did anything change
|
|
31
|
+
outside Superdev (new commits, dirty worktree, a dependency bump)? Report
|
|
32
|
+
every discrepancy as drift. Never reconcile it silently.
|
|
33
|
+
5. **Check what accumulated while you were away.** `SD docs diff` for pending
|
|
34
|
+
proposals, blocked tasks, and owner questions answered or still open.
|
|
35
|
+
6. **Reconstruct the working frame** out loud: objective, active task, the
|
|
36
|
+
contract it implements, the decisions that govern it, what is blocked, and
|
|
37
|
+
what verification the task requires.
|
|
38
|
+
7. **Propose the next action**: the recorded one, revalidated. If it no longer
|
|
39
|
+
applies, say why and propose the corrected step.
|
|
40
|
+
8. **Confirm before implementing** when anything material drifted since the
|
|
41
|
+
record was written.
|
|
42
|
+
|
|
43
|
+
## If there is no active assignment
|
|
44
|
+
|
|
45
|
+
Do not invent one. Report what the project's next action is, offer the ready
|
|
46
|
+
work from `SD task list --status ready`, and let the person choose. Then run the
|
|
47
|
+
before-implementation sequence from the `task` skill before touching code.
|
|
48
|
+
|
|
49
|
+
## Harness reality
|
|
50
|
+
|
|
51
|
+
- On Claude Code, the session-start hook already shows the active task. Running
|
|
52
|
+
`SD resume` is still correct; it is cheap and it is the same source.
|
|
53
|
+
- On Codex, hooks fire only if the user has trusted them, so assume they did
|
|
54
|
+
not and run `SD resume` explicitly.
|
|
55
|
+
- On skills.sh there is no lifecycle hook at all. `SD resume` is the only way
|
|
56
|
+
the context arrives.
|
|
57
|
+
|
|
58
|
+
Correctness never depends on a hook having fired. Say which command you ran.
|
|
59
|
+
|
|
60
|
+
## Providers
|
|
61
|
+
|
|
62
|
+
Claude Mem, when installed, may supplement recall of earlier conversations. It
|
|
63
|
+
is a cache and never project authority: every recalled fact is verified against
|
|
64
|
+
the database or the repository before consequential use, and recall-sourced
|
|
65
|
+
claims carry their verification status. If it is not installed, resume from the
|
|
66
|
+
database alone and say so. Do not credit it when it did not run.
|
|
67
|
+
|
|
68
|
+
## Boundaries
|
|
69
|
+
|
|
70
|
+
- Read only until the person confirms the resumed direction.
|
|
71
|
+
- Everything asserted must trace to a named record or a named piece of live
|
|
72
|
+
evidence. Fresh-session accuracy is this skill's whole job.
|
|
73
|
+
- Never reconstruct state by re-reading old conversation summaries when a record
|
|
74
|
+
exists that answers the same question.
|
|
75
|
+
|
|
76
|
+
*Standalone note: on skills.sh, install the generated `superdev` package. It
|
|
77
|
+
carries the orchestrator, the Docs capability and the runtime, and needs no
|
|
78
|
+
repository. A single skill copied out on its own has no runtime; say which
|
|
79
|
+
command was unavailable rather than working around it silently.*
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: review
|
|
3
|
+
description: Review a change in two stages, first whether it matches what was accepted, then whether the code is any good. Use for "review this", "review the PR", "check this against the spec", "is this ready to merge?", or before completing substantial work. Stage one compares the diff against the task's contract links, the feature's acceptance criteria and the governing decisions, and flags behavior that nobody specified. Stage two covers correctness, security, error handling, product tests and maintainability. Every finding carries a severity, a concrete failure scenario, a location, the requirement it affects, a remediation and a confidence. Reports findings; applies fixes only when asked.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review
|
|
7
|
+
|
|
8
|
+
A change that perfectly implements the wrong thing still fails. Stage one runs
|
|
9
|
+
first, always.
|
|
10
|
+
|
|
11
|
+
`SD` means the installed `superdev` command, with `--root <project>` on
|
|
12
|
+
every call.
|
|
13
|
+
|
|
14
|
+
## Stage one: contract compliance
|
|
15
|
+
|
|
16
|
+
1. **Find the governing contract.** `SD task show <TASK-id>` gives the task, its
|
|
17
|
+
feature, and the exact contracts it links: workflow steps, UI actions, API
|
|
18
|
+
operations, data entities, migrations, integrations, jobs, webhooks, NFRs,
|
|
19
|
+
documents, decisions. That link set is the specification for this diff.
|
|
20
|
+
No task means the work skipped the before-implementation sequence, which is
|
|
21
|
+
itself a finding.
|
|
22
|
+
2. **Check the acceptance criteria** of the feature the task belongs to. Each
|
|
23
|
+
one either has evidence in this change or is explicitly out of scope for this
|
|
24
|
+
task.
|
|
25
|
+
3. **Check the governing decisions.** `SD decision list --json`. A change that
|
|
26
|
+
violates an active decision is a P0 finding and routes to the `decision`
|
|
27
|
+
skill, never a quiet exception.
|
|
28
|
+
4. **Look for unspecified behavior in the diff.** New behavior nobody accepted
|
|
29
|
+
needs a specification through the `feature` skill or an explicitly recorded
|
|
30
|
+
bypass with owner, reason, scope and expiry. Side effects that were never
|
|
31
|
+
requested are findings, not bonuses.
|
|
32
|
+
5. **Check the documentation projection.** `SD docs diff`. A pending proposal
|
|
33
|
+
means the docs and the database disagree, and merging on top of that hides
|
|
34
|
+
the disagreement.
|
|
35
|
+
|
|
36
|
+
## Stage two: code quality
|
|
37
|
+
|
|
38
|
+
Review the diff plus enough surrounding code to judge it:
|
|
39
|
+
|
|
40
|
+
- correctness defects, including the paths the change did not touch but affects;
|
|
41
|
+
- security: trust boundaries, injection, authorization, secret handling;
|
|
42
|
+
- error handling and data-loss paths;
|
|
43
|
+
- product tests: missing, weakened, or asserting the implementation rather than
|
|
44
|
+
the behavior;
|
|
45
|
+
- convention violations against this repository, not against a general
|
|
46
|
+
preference;
|
|
47
|
+
- complexity beyond the smallest sufficient solution.
|
|
48
|
+
|
|
49
|
+
For products built with Superdev, the expected tests come from the accepted
|
|
50
|
+
product test plan. Never require tests for the Superdev plugin itself: it has
|
|
51
|
+
none, by design.
|
|
52
|
+
|
|
53
|
+
## Finding format
|
|
54
|
+
|
|
55
|
+
Every finding, both stages:
|
|
56
|
+
|
|
57
|
+
**Severity** (P0 blocks, P1 should fix, P2 improvement) followed by a **concrete
|
|
58
|
+
failure scenario** (inputs and state leading to the wrong outcome; no scenario,
|
|
59
|
+
no finding), **file and line**, the **requirement or contract affected**, a
|
|
60
|
+
**remediation**, and your **confidence**.
|
|
61
|
+
|
|
62
|
+
A finding without a failure scenario is a preference. Say so, or drop it.
|
|
63
|
+
|
|
64
|
+
## Providers
|
|
65
|
+
|
|
66
|
+
Route review discipline to **Superpowers** (its code review and receiving-review
|
|
67
|
+
workflows) and, for interface work, critique and accessibility to **Impeccable**.
|
|
68
|
+
Check readiness with `SD doctor`. If a provider is not ready, apply this
|
|
69
|
+
contract directly and say plainly that the specialist pass did not run. Never
|
|
70
|
+
present your own checklist as theirs.
|
|
71
|
+
|
|
72
|
+
## After the review
|
|
73
|
+
|
|
74
|
+
- Findings that survive verification block completion of the work under review.
|
|
75
|
+
Record them: `SD task evidence <TASK-id> --summary "<the P0 and P1 findings>" --result fail`, or
|
|
76
|
+
`SD task block <TASK-id> --reason <why>` when the work cannot proceed.
|
|
77
|
+
- When the change is accepted, completion still needs its evidence through
|
|
78
|
+
`SD task complete`. A passing review is one kind of evidence, not a substitute
|
|
79
|
+
for the product's own verification.
|
|
80
|
+
|
|
81
|
+
## Boundaries
|
|
82
|
+
|
|
83
|
+
- Report findings; apply fixes only when asked.
|
|
84
|
+
- State honestly what was reviewed and what was not: paths, depth, generated
|
|
85
|
+
code skipped, anything you could not run.
|
|
86
|
+
- Never approve on the basis of a check you did not actually run.
|
|
87
|
+
|
|
88
|
+
*Standalone note: on skills.sh, install the generated `superdev` package. It
|
|
89
|
+
carries the orchestrator, the Docs capability and the runtime, and needs no
|
|
90
|
+
repository. A single skill copied out on its own has no runtime; say which
|
|
91
|
+
command was unavailable rather than working around it silently.*
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: status
|
|
3
|
+
description: Report where the project actually stands, from the Superdev database. Use for "where are we?", "what is done?", "what is blocked?", "what is left?", "show me progress", "is anything stale?", or before a handoff, a standup or a release conversation. Reads active work, progress with the counts behind it, blockers, open owner questions, capability areas awaiting a decision, pending documentation proposals, evidence freshness and the next action, then reports them in plain language. Read only, so it changes no record, and it never states a percentage the accepted contract does not support.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Project Status
|
|
7
|
+
|
|
8
|
+
Report the truth, including the parts nobody wants to hear. Every number comes
|
|
9
|
+
from the database and can explain itself.
|
|
10
|
+
|
|
11
|
+
`SD` means the installed `superdev` command, with `--root <project>` on
|
|
12
|
+
every call.
|
|
13
|
+
|
|
14
|
+
## Steps
|
|
15
|
+
|
|
16
|
+
1. **Read the status.** `SD status --json`. It carries active work, progress per
|
|
17
|
+
feature, module, milestone and goal, blockers, freshness and the derived next
|
|
18
|
+
action. If there is no project in the database, say so and offer `init`
|
|
19
|
+
rather than describing a project that does not exist.
|
|
20
|
+
2. **Check the database is sound.** `SD db status` runs the integrity and
|
|
21
|
+
foreign-key check. A failing integrity check is the headline, not a footnote.
|
|
22
|
+
3. **Check for pending documentation proposals.** `SD docs diff`. A manual edit
|
|
23
|
+
to generated Markdown is waiting for review, and until it is reviewed the
|
|
24
|
+
docs and the database disagree.
|
|
25
|
+
4. **Check open owner questions and unresolved capability areas.** An area
|
|
26
|
+
awaiting a decision is unfinished planning, not a blank.
|
|
27
|
+
5. **Cross-check against live reality.** Current branch and HEAD, dirty files,
|
|
28
|
+
whether the evidence behind recent completions still matches what is on disk.
|
|
29
|
+
Report a disagreement as a disagreement; never reconcile it silently.
|
|
30
|
+
6. **Report** in the shape below.
|
|
31
|
+
|
|
32
|
+
## What to report
|
|
33
|
+
|
|
34
|
+
- **Where the project stands**: completed and total per applicable component,
|
|
35
|
+
with what counts and what remains.
|
|
36
|
+
- **Active work**: the claimed task, its feature, who or what holds it, and how
|
|
37
|
+
long it has been held.
|
|
38
|
+
- **Blocked work**, each with what would unblock it.
|
|
39
|
+
- **Open owner questions** and capability areas awaiting a decision.
|
|
40
|
+
- **Pending documentation proposals** from `docs diff`.
|
|
41
|
+
- **Freshness**: database revision, last event sequence, last documentation
|
|
42
|
+
generation, active session heartbeat, branch HEAD, stale evidence.
|
|
43
|
+
- **The next action**: exactly one, and say why it is next.
|
|
44
|
+
|
|
45
|
+
Lead with what matters. A wall of counts is not a status report.
|
|
46
|
+
|
|
47
|
+
## Progress honesty
|
|
48
|
+
|
|
49
|
+
Progress is derived from the accepted product contract, and one implementation
|
|
50
|
+
computes it for both the command line and the control center. They cannot
|
|
51
|
+
disagree.
|
|
52
|
+
|
|
53
|
+
- Only applicable components count. A backend feature with no interface is not
|
|
54
|
+
permanently short one component.
|
|
55
|
+
- A record with no declared completion contract reports **Not measurable**.
|
|
56
|
+
Never zero, never one hundred percent.
|
|
57
|
+
- Every value carries its completed count, total count, what counts, what
|
|
58
|
+
remains, source revision and freshness. A bare percentage is not a valid
|
|
59
|
+
answer.
|
|
60
|
+
- Cancelled and superseded work leaves the totals and stays visible in history.
|
|
61
|
+
- Evidence older than thirty days is **stale**, which is not the same as
|
|
62
|
+
satisfied.
|
|
63
|
+
|
|
64
|
+
Never fabricate progress for a record the database has no contract for, and
|
|
65
|
+
never average unrelated numbers into one comforting figure.
|
|
66
|
+
|
|
67
|
+
## Seeing it
|
|
68
|
+
|
|
69
|
+
`SD ui` opens the control center, which shows the same data live and updates
|
|
70
|
+
from committed transactions. Offer it whenever the answer is more than a
|
|
71
|
+
paragraph, or when someone wants the blueprint, workflow, data or readiness
|
|
72
|
+
views rather than prose.
|
|
73
|
+
|
|
74
|
+
## Boundaries
|
|
75
|
+
|
|
76
|
+
- Read only. This skill changes no record and repairs nothing while reporting.
|
|
77
|
+
A repair routes to `task`, `decision`, `feature` or `docs`.
|
|
78
|
+
- Never state a percentage the accepted contract does not support.
|
|
79
|
+
- Never present the absence of a record as the absence of the problem. Say what
|
|
80
|
+
is unknown and what would make it known.
|
|
81
|
+
|
|
82
|
+
*Standalone note: on skills.sh, install the generated `superdev` package. It
|
|
83
|
+
carries the orchestrator, the Docs capability and the runtime, and needs no
|
|
84
|
+
repository. A single skill copied out on its own has no runtime; say which
|
|
85
|
+
command was unavailable rather than working around it silently.*
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: task
|
|
3
|
+
description: Run the task lifecycle against the Superdev database. Use for "what should I work on?", "what am I working on?", "create a task for this", "claim this", "this is blocked", "mark it done", "reopen that", "break this into subtasks", or when a task creation is refused because it has no feature or no contract behind it. Covers deriving tasks from accepted specifications, the find-or-create then link then claim sequence before implementation, recording activity, blocking and unblocking, completing with evidence, reopening with history, and the dependency and subtask graph. Does not run the feature interview, and an unspecified feature routes to the feature skill first.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Task Lifecycle
|
|
7
|
+
|
|
8
|
+
Task tracking is an execution contract, not a status report written afterwards.
|
|
9
|
+
Every task lives in the database at `.superdev/superdev.db`. There is no task
|
|
10
|
+
file, and there never will be: one file per row is the failure this design
|
|
11
|
+
exists to remove.
|
|
12
|
+
|
|
13
|
+
`SD` means the installed `superdev` command, with `--root <project>` on
|
|
14
|
+
every call. Full surface:
|
|
15
|
+
`the plugin's skills/project/references/commands.md`.
|
|
16
|
+
|
|
17
|
+
## The two rules the database enforces
|
|
18
|
+
|
|
19
|
+
1. **Every task belongs to exactly one feature.** `feature_id` cannot be null.
|
|
20
|
+
2. **Every task either links a contract or is explicitly enabling.** Contract
|
|
21
|
+
kinds: workflow step, UI action, API operation, data entity, migration,
|
|
22
|
+
integration, job, webhook, NFR, document, accepted decision. Enabling work
|
|
23
|
+
must name the feature it unblocks in plain language.
|
|
24
|
+
|
|
25
|
+
These are triggers, not advice. Refusals:
|
|
26
|
+
|
|
27
|
+
| Code | What it means | What to do |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `E_TASK_WITHOUT_CONTRACT` | The task implements nothing that was specified | Link the contract, or specify it first through the `feature` skill |
|
|
30
|
+
| `E_ENABLING_WITHOUT_TARGET` | Enabling work naming no unblocked feature | Add `--enabling --unblocks <FEAT-id>` and say why in the outcome |
|
|
31
|
+
| `E_OPEN_SUBTASKS` | A parent cannot close over open required children | Close or cancel the children, or remove the requirement deliberately |
|
|
32
|
+
| `E_VERSION_CONFLICT` | The record changed under you | Re-read with `task show` and retry |
|
|
33
|
+
| `E_DB_LOCKED` | Another process holds the write lock | Retry. Never remove a lock by hand |
|
|
34
|
+
|
|
35
|
+
A refusal is information: the work is not yet understood well enough to start.
|
|
36
|
+
Do not route around it by inventing a feature or a link.
|
|
37
|
+
|
|
38
|
+
## Deriving work
|
|
39
|
+
|
|
40
|
+
Tasks are derived from accepted specifications, never invented from a feature
|
|
41
|
+
title.
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
SD derive <FEAT-id>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Derivation reads acceptance criteria, workflow steps, surfaces and UI actions,
|
|
48
|
+
API operations, data entities and migrations, integrations, jobs and webhooks,
|
|
49
|
+
permissions, NFRs, observability, the product test plan, documentation
|
|
50
|
+
synchronization, and rollout and rollback.
|
|
51
|
+
|
|
52
|
+
- Outcome sized: assignable, implementable, verifiable.
|
|
53
|
+
- Not one task per row. Combine what must change together, split what can be
|
|
54
|
+
delivered or blocked on its own.
|
|
55
|
+
- Subtasks only where they improve execution clarity.
|
|
56
|
+
- **Present the derived plan for acceptance before any of it is implemented.**
|
|
57
|
+
- A scope change updates the specification first, then regenerates a delta.
|
|
58
|
+
- Product test work comes from the accepted product test plan. Never create a
|
|
59
|
+
test task for the Superdev plugin itself.
|
|
60
|
+
|
|
61
|
+
## Before implementation
|
|
62
|
+
|
|
63
|
+
The sequence, in order:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
SD task list --status ready --json # 1. is there already a task
|
|
67
|
+
SD task create --feature <FEAT-id> --name <t> \
|
|
68
|
+
--link <kind>:<id> # 2, 3, 4. draft it with its contract
|
|
69
|
+
SD decision list --json # 6. governing decisions
|
|
70
|
+
SD task claim <TASK-id> # 7. developer, agent, branch, session
|
|
71
|
+
SD task update <TASK-id> --status in_progress # 8.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Step 5 has no command: if the feature does not exist, stop and specify it
|
|
75
|
+
through the `feature` skill. Implementation waits.
|
|
76
|
+
|
|
77
|
+
Claim exactly one active task at a time. If a second piece of work appears
|
|
78
|
+
mid-flight, it is either in scope for the current task (update it) or a new task
|
|
79
|
+
(create it and leave it Ready).
|
|
80
|
+
|
|
81
|
+
## Status model
|
|
82
|
+
|
|
83
|
+
Draft, Ready, In Progress, In Review, Verifying, Blocked, Paused, Complete,
|
|
84
|
+
Cancelled, Superseded.
|
|
85
|
+
|
|
86
|
+
- Status history is append-only. Nothing is edited into a different past.
|
|
87
|
+
- Parent status is derived. A parent never completes while required child work
|
|
88
|
+
is open or verification is missing.
|
|
89
|
+
- Move with `SD task update <TASK-id> --status <status>`.
|
|
90
|
+
|
|
91
|
+
Categories are data, not constants: Feature, Improvement, Bug, Refactor,
|
|
92
|
+
Investigation, Documentation, Integration, Migration, Infrastructure, Security,
|
|
93
|
+
Quality, Backlog. A project may add its own. An unclassified historical task
|
|
94
|
+
displays as Unclassified until someone classifies it deliberately.
|
|
95
|
+
|
|
96
|
+
## During the work
|
|
97
|
+
|
|
98
|
+
- `SD task evidence <TASK-id> --summary "<what changed and why>"` at natural
|
|
99
|
+
boundaries. Every mutation already writes an activity event, so a note is for
|
|
100
|
+
what a human would want to read later, not for narrating tool calls.
|
|
101
|
+
- Scope grew? Update the task and the specification before continuing.
|
|
102
|
+
- `SD task block <TASK-id> --reason <why>` the moment something blocks, with
|
|
103
|
+
what would unblock it. A blocker discovered at the end of a session was
|
|
104
|
+
unrecorded for the whole session.
|
|
105
|
+
- Dependencies: a task that must wait names what it waits for, so the graph and
|
|
106
|
+
not a memory decides the order.
|
|
107
|
+
|
|
108
|
+
## Completing
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
SD task evidence <TASK-id> \
|
|
112
|
+
--summary <what was observed> \
|
|
113
|
+
--result <pass|fail|inconclusive> \
|
|
114
|
+
--type <validator|command|review|manual_check> \
|
|
115
|
+
--reference <path or command> \
|
|
116
|
+
--command <the check, re-runnable> \
|
|
117
|
+
--criterion <AC-id, when it proves one> \
|
|
118
|
+
--plan <TP-id, when it is a run of an accepted test plan>
|
|
119
|
+
SD task complete <TASK-id>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Record `--command` whenever a command proved it, so `SD verify` can re-run the
|
|
123
|
+
check later and mark the evidence stale if it stops passing. Leave it off when
|
|
124
|
+
nothing reproduces the check; a manual verification is honest, an invented
|
|
125
|
+
command is not.
|
|
126
|
+
|
|
127
|
+
Completion is refused until every verification requirement the task states
|
|
128
|
+
carries its own passing evidence, so `task evidence` runs once per requirement
|
|
129
|
+
and `task complete` comes last. Section 9.3 also requires the accepted test
|
|
130
|
+
plans covering the work to have passed: `SD test-plan list` shows which cover
|
|
131
|
+
it and whether each has a passing run, `SD test-plan run <TP-id>` runs the ones
|
|
132
|
+
that are commands, and `SD test-plan record <TP-id> --summary` records a journey
|
|
133
|
+
that was carried out rather than run. An acceptance criterion that will not be
|
|
134
|
+
met is set aside with `SD feature waive <AC-id> --reason`, never left silently
|
|
135
|
+
unmet. A requirement you could not run takes
|
|
136
|
+
`--result inconclusive`, which records the attempt and leaves the task open.
|
|
137
|
+
|
|
138
|
+
Before that call:
|
|
139
|
+
|
|
140
|
+
1. Run the product's required verification and read the output. Never attach
|
|
141
|
+
evidence for a run you did not observe.
|
|
142
|
+
2. Update affected docs: `SD docs generate`, then `SD docs diff` for pending
|
|
143
|
+
proposals.
|
|
144
|
+
3. Confirm the related acceptance criteria are genuinely satisfied.
|
|
145
|
+
4. Complete or reopen dependent work as the graph requires.
|
|
146
|
+
|
|
147
|
+
Completion releases the assignment and recalculates parent progress from the
|
|
148
|
+
accepted contract. Evidence older than thirty days is stale, which is not the
|
|
149
|
+
same as satisfied.
|
|
150
|
+
|
|
151
|
+
## Reopening and superseding
|
|
152
|
+
|
|
153
|
+
- `SD task reopen <TASK-id> --reason <why>` when completed work turns out not to
|
|
154
|
+
hold. History is preserved; the earlier completion and its evidence stay
|
|
155
|
+
visible.
|
|
156
|
+
- Work that no longer applies is cancelled or superseded, with the successor
|
|
157
|
+
named. Never silently rewrite a completed task into a different task.
|
|
158
|
+
|
|
159
|
+
## Reading the board
|
|
160
|
+
|
|
161
|
+
- `SD task list --status <status>` filters the board.
|
|
162
|
+
- `SD task list --feature <FEAT-id>` shows one feature's work.
|
|
163
|
+
- `SD task list --all` includes work that is not Ready. Claims show in the
|
|
164
|
+
listing, so what this developer or agent holds is read from there.
|
|
165
|
+
- `SD task show <TASK-id>` gives contract links, dependencies, subtasks,
|
|
166
|
+
activity and evidence.
|
|
167
|
+
- `SD ui` opens the same data in the control center, live.
|
|
168
|
+
|
|
169
|
+
## Boundaries
|
|
170
|
+
|
|
171
|
+
- Never mark a task complete to make a report look finished. Completion is
|
|
172
|
+
evidence.
|
|
173
|
+
- Never create a task that exists only to satisfy tracking. If it implements
|
|
174
|
+
nothing specified and unblocks nothing, it should not exist.
|
|
175
|
+
- Never put secrets, personal data or absolute machine paths into a task, a
|
|
176
|
+
note, or an evidence reference.
|
|
177
|
+
- Task detail belongs in the database and the control center, not in a Markdown
|
|
178
|
+
file. Do not generate one.
|
|
179
|
+
|
|
180
|
+
*Standalone note: on skills.sh, install the generated `superdev` package. It
|
|
181
|
+
carries the orchestrator, the Docs capability and the runtime, and needs no
|
|
182
|
+
repository. A single skill copied out on its own has no runtime; say which
|
|
183
|
+
command was unavailable rather than working around it silently.*
|