buildkeel 0.1.0 → 0.3.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/README.md +1 -3
- package/antigravity/bin/bk-launch +4 -8
- package/antigravity/bin/bk-launch.cmd +7 -16
- package/antigravity/bin/bk-start.cjs +25 -0
- package/antigravity/dist/hooks/main.js +17 -15
- package/antigravity/dist/server/main.js +384 -262
- package/antigravity/package.json +1 -1
- package/antigravity/plugin.json +1 -1
- package/antigravity/rules/buildkeel.md +4 -4
- package/antigravity/skills/bk-adhoc/SKILL.md +1 -1
- package/antigravity/skills/bk-approve/SKILL.md +4 -2
- package/antigravity/skills/bk-build/SKILL.md +13 -2
- package/antigravity/skills/bk-capture/SKILL.md +64 -15
- package/antigravity/skills/bk-done/SKILL.md +11 -1
- package/antigravity/skills/bk-impact/SKILL.md +8 -1
- package/antigravity/skills/bk-init/SKILL.md +20 -8
- package/antigravity/skills/bk-migrate/SKILL.md +1 -1
- package/antigravity/skills/bk-new/SKILL.md +17 -4
- package/antigravity/skills/bk-onboard/SKILL.md +22 -3
- package/antigravity/skills/bk-start/SKILL.md +7 -1
- package/antigravity/skills/bk-stats/SKILL.md +1 -1
- package/antigravity/skills/bk-status/SKILL.md +2 -0
- package/antigravity/templates/design.md +1 -0
- package/antigravity/templates/epic.md +1 -0
- package/antigravity/templates/idea.md +1 -0
- package/antigravity/templates/spec-driven/capability.md +28 -0
- package/antigravity/templates/spec-driven/proposal.md +40 -0
- package/antigravity/templates/spec-driven/spec-change.md +43 -0
- package/antigravity/templates/spec-driven/tasks.md +17 -0
- package/antigravity/templates/story.md +1 -0
- package/antigravity/templates/task.md +1 -0
- package/cli.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: bk-start
|
|
3
|
-
description: "BuildKeel: Start work on a task, story, bug or ad-hoc unit: check it is ready, switch to its branch and load its context. Run as /bk-start [unit ID], e.g. TK-001."
|
|
3
|
+
description: "BuildKeel: Start work on a task, story, bug or ad-hoc unit: check it is ready, switch to its branch and load its context. Run as /bk-start [unit ID], e.g. TK-001, only when the user types it."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
BuildKeel's tools are on the MCP server `buildkeel`: call each one with `call_mcp_tool` (`ServerName` `buildkeel`, `ToolName` the tool's name), passing `workspace`, the absolute path of this project's folder. Never read or write the spec tree's files instead. If you have no `call_mcp_tool` tool, tell the user to start a new conversation and stop: never run BuildKeel's server or programs yourself.
|
|
@@ -11,6 +11,8 @@ Start work on a BuildKeel unit with the user. Every code change belongs to exact
|
|
|
11
11
|
|
|
12
12
|
The user typed: whatever follows /bk-start in the user's message (nothing, if they typed only /bk-start)
|
|
13
13
|
|
|
14
|
+
If BuildKeel's session report, or `query` with `view: "process"`, says this spec tree is Spec-driven, follow "In a Spec-driven tree" at the end as well.
|
|
15
|
+
|
|
14
16
|
## Choose the unit
|
|
15
17
|
|
|
16
18
|
If the user named a unit above, use it.
|
|
@@ -36,3 +38,7 @@ Call the BuildKeel `start_work` tool with the unit's `id`.
|
|
|
36
38
|
- **Started:** tell the user the branch and anything it warned about, such as a spec tree that is behind its remote. Then give a short summary of the context it returned: what to build, the acceptance criteria, and the test cases, by ID. Propose how to begin, and ask before writing code.
|
|
37
39
|
|
|
38
40
|
Keep the context in mind for the rest of the work, and call `get_context` again if you lose track of it. Do not create or edit spec tree files yourself.
|
|
41
|
+
|
|
42
|
+
## In a Spec-driven tree
|
|
43
|
+
|
|
44
|
+
The units are open changes, bugs and ad-hoc units, and no gate runs: `start_work` starts the unit, or says which working tree on this machine already holds it. If nothing can be started, suggest drafting a change with /bk-capture. When a change starts, sum up its context in a few lines: what the proposal changes, the requirements it adds, modifies or removes by ID, how many of its tasks are done, and the next unticked task. Propose starting with that task, or running /bk-build for all of them, and ask before writing code.
|
|
@@ -24,7 +24,7 @@ If the user typed nothing, ask straight away, before calling any tool: "Which pe
|
|
|
24
24
|
|
|
25
25
|
## Show it
|
|
26
26
|
|
|
27
|
-
Call the BuildKeel `query` tool with `view: "stats"` and `days` (leave `days` out for all of it). Show the result as it is: it opens with what the period comes to, then the details.
|
|
27
|
+
Call the BuildKeel `query` tool with `view: "stats"` and `days` (leave `days` out for all of it). Show the result as it is: it opens with what the period comes to, then the details. In a Spec-driven tree it counts changes and what finishing them reported, in place of gate figures.
|
|
28
28
|
|
|
29
29
|
## Change the record
|
|
30
30
|
|
|
@@ -14,3 +14,5 @@ Show the user the result as it is, keeping its indentation, which shows the hier
|
|
|
14
14
|
If it lists claims on this machine, end by saying that a claim can be released before its unit is finished. Release one only when the user asks for it: call the BuildKeel `manage` tool with `action: "release"` and the unit's `id`, and show the result.
|
|
15
15
|
|
|
16
16
|
If the result says this repository is not set up for BuildKeel, tell the user how to set it up with /bk-init.
|
|
17
|
+
|
|
18
|
+
In a Spec-driven tree, the result ends with an offer to review the active change. Ask, with your tool for asking a question with choices: **Review <ID> now** (the default) or **Not now**. To review, call `finish_work` without `apply`, review as its result says, and report your judgment; do not finish the change unless the user asks.
|
|
@@ -19,6 +19,7 @@ sections:
|
|
|
19
19
|
Operations: { offered: "How it is deployed, monitored and supported." }
|
|
20
20
|
Rollout and rollback: { offered: "How it is released, and how it is undone if something goes wrong." }
|
|
21
21
|
Testing approach: { offered: "How the design is tested beyond the test cases in its test plans." }
|
|
22
|
+
Open questions: { offered: "Questions that can safely wait, each with who answers it and by when. A question whose answer would change the specs or tasks is answered first." }
|
|
22
23
|
Notes: { offered: "Background, links, and anything from a source that fits no other section." }
|
|
23
24
|
---
|
|
24
25
|
|
|
@@ -10,6 +10,7 @@ sections:
|
|
|
10
10
|
Summary: { required: true }
|
|
11
11
|
Scope: { required: true, tracked: true }
|
|
12
12
|
Out of scope: { tracked: true }
|
|
13
|
+
Open questions: { offered: "Questions left open, each with what it is about, to settle later. They do not block approval: the approval summary lists them." }
|
|
13
14
|
Notes: {}
|
|
14
15
|
---
|
|
15
16
|
|
|
@@ -10,6 +10,7 @@ sections:
|
|
|
10
10
|
Problem: { required: true, tracked: true }
|
|
11
11
|
Goals: { required: true, tracked: true, items: { prefix: G, style: list } }
|
|
12
12
|
Success measures: { tracked: true }
|
|
13
|
+
Open questions: { offered: "Questions left open, each with what it is about, to settle later. They do not block approval: the approval summary lists them." }
|
|
13
14
|
Notes: {}
|
|
14
15
|
---
|
|
15
16
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: capability
|
|
3
|
+
version: 1
|
|
4
|
+
description: How one lasting behavior of the system works now. A purpose, then requirements, each with scenarios a test can check. Changed only by finishing a change.
|
|
5
|
+
fields:
|
|
6
|
+
title: { required: true }
|
|
7
|
+
sections:
|
|
8
|
+
Purpose: { required: true }
|
|
9
|
+
Requirements: { required: true, tracked: true, items: { prefix: R, style: heading, children: { prefix: S, style: heading } } }
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
<!-- What this capability covers and why it exists, in one or two sentences. -->
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
<!--
|
|
19
|
+
One heading per requirement, with its ID and a short name. Under it, the behavior in one or two sentences using SHALL or MUST, at most 500 characters.
|
|
20
|
+
Then one heading per scenario, with its ID and a short name, and a WHEN line and a THEN line a test can check. Every requirement has at least one scenario.
|
|
21
|
+
|
|
22
|
+
### AUTH-R3 Reset link expires
|
|
23
|
+
The system SHALL expire a reset link 30 minutes after it is sent.
|
|
24
|
+
|
|
25
|
+
#### AUTH-R3-S1 Expired link
|
|
26
|
+
- **WHEN** a user opens a reset link 31 minutes after it was sent
|
|
27
|
+
- **THEN** they are told the link expired and offered a new one
|
|
28
|
+
-->
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: proposal
|
|
3
|
+
version: 1
|
|
4
|
+
description: Why a change is made, what it changes, and which capabilities it adds or alters. Its spec changes say exactly how behavior changes.
|
|
5
|
+
fields:
|
|
6
|
+
title: { required: true }
|
|
7
|
+
capabilities: { type: list }
|
|
8
|
+
noSpecChanges: { type: boolean }
|
|
9
|
+
sections:
|
|
10
|
+
Why: { required: true }
|
|
11
|
+
What changes: { required: true }
|
|
12
|
+
Capabilities: { required: true }
|
|
13
|
+
Impact: { required: true }
|
|
14
|
+
Non-goals: { offered: "What the change deliberately leaves out, so nobody builds it by mistake." }
|
|
15
|
+
Open questions: { offered: "Questions left open, each with what it is about, to settle later. They do not block approval: the approval summary lists them." }
|
|
16
|
+
Notes: { offered: "Background, links, and anything from a source that fits no other section." }
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Why
|
|
20
|
+
|
|
21
|
+
<!-- The problem or the opportunity, and why it is worth doing now. One or two short paragraphs. -->
|
|
22
|
+
|
|
23
|
+
## What changes
|
|
24
|
+
|
|
25
|
+
<!-- One line per change in behavior, interface or data. Mark each change that breaks existing users or callers with **BREAKING**. -->
|
|
26
|
+
|
|
27
|
+
## Capabilities
|
|
28
|
+
|
|
29
|
+
<!--
|
|
30
|
+
Each capability the change adds or alters, by code, with what changes in it. The capabilities field lists the same codes.
|
|
31
|
+
|
|
32
|
+
- **AUTH** (modified): reset links expire after 30 minutes.
|
|
33
|
+
- **SMS** (new): sending one-time codes by text message.
|
|
34
|
+
|
|
35
|
+
A change that alters no behavior, such as a refactor, says so here, sets noSpecChanges: true, and has no spec changes.
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
## Impact
|
|
39
|
+
|
|
40
|
+
<!-- The code, APIs, dependencies, data and systems the change affects. -->
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: spec-change
|
|
3
|
+
version: 1
|
|
4
|
+
description: How a change alters one capability's requirements. Existing requirements are named by ID, so a rename keeps its ID.
|
|
5
|
+
fields:
|
|
6
|
+
capability: { required: true }
|
|
7
|
+
title: {}
|
|
8
|
+
base: {}
|
|
9
|
+
sections:
|
|
10
|
+
Purpose: { offered: "For a new capability: what it covers and why it exists, in one or two sentences." }
|
|
11
|
+
Added: { tracked: true, items: { prefix: R, style: heading, children: { prefix: S, style: heading } } }
|
|
12
|
+
Modified: { tracked: true, items: { prefix: R, style: heading, children: { prefix: S, style: heading } } }
|
|
13
|
+
Removed: { tracked: true, items: { prefix: R, style: heading } }
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<!-- The capability field names the capability by its code. For a new capability, also give its title (title: Text messages) and add a Purpose section. Leave out Added, Modified or Removed when the change has nothing in it. -->
|
|
17
|
+
|
|
18
|
+
## Added
|
|
19
|
+
|
|
20
|
+
<!--
|
|
21
|
+
New requirements, each with its scenarios, written as the capability spec writes them.
|
|
22
|
+
|
|
23
|
+
### AUTH-R3 Reset link expires
|
|
24
|
+
The system SHALL expire a reset link 30 minutes after it is sent.
|
|
25
|
+
|
|
26
|
+
#### AUTH-R3-S1 Expired link
|
|
27
|
+
- **WHEN** a user opens a reset link 31 minutes after it was sent
|
|
28
|
+
- **THEN** they are told the link expired and offered a new one
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
## Modified
|
|
32
|
+
|
|
33
|
+
<!-- Existing requirements by ID, each with its full new text and every scenario it keeps or gains, not only what differs. A new name under the same ID renames it. -->
|
|
34
|
+
|
|
35
|
+
## Removed
|
|
36
|
+
|
|
37
|
+
<!--
|
|
38
|
+
Requirements that no longer apply, by ID, each with why and what users or callers do instead.
|
|
39
|
+
|
|
40
|
+
### AUTH-R1 Sign in with a security question
|
|
41
|
+
**Reason**: security questions are replaced by email codes.
|
|
42
|
+
**Migration**: users set up email codes at their next sign-in.
|
|
43
|
+
-->
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
template: tasks
|
|
3
|
+
version: 1
|
|
4
|
+
description: The work of a change, as numbered tasks in groups ordered so that each builds on the ones before. A task is ticked once its verification passes.
|
|
5
|
+
fields:
|
|
6
|
+
parent: { required: true, type: link }
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. <What this group delivers>
|
|
10
|
+
|
|
11
|
+
<!--
|
|
12
|
+
One checkbox per task, numbered within its group, each saying what is done and how its completion is verified.
|
|
13
|
+
Each group includes the tests and documentation its own work needs. Tick a task only once its verification passed.
|
|
14
|
+
|
|
15
|
+
- [ ] 1.1 Add the issue time to reset tokens. Verify: token tests for a new and an old token.
|
|
16
|
+
- [ ] 1.2 Refuse links older than 30 minutes. Verify: the "Expired link" scenario test (AUTH-R3-S1).
|
|
17
|
+
-->
|
|
@@ -10,6 +10,7 @@ sections:
|
|
|
10
10
|
Summary: { required: true }
|
|
11
11
|
Story: { required: true, tracked: true }
|
|
12
12
|
Acceptance criteria: { required: true, tracked: true, items: { prefix: AC, style: list } }
|
|
13
|
+
Open questions: { offered: "Questions left open, each with what it is about, to settle later. They do not block approval: the approval summary lists them." }
|
|
13
14
|
Notes: {}
|
|
14
15
|
---
|
|
15
16
|
|
|
@@ -9,6 +9,7 @@ fields:
|
|
|
9
9
|
scope: { type: list }
|
|
10
10
|
sections:
|
|
11
11
|
Description: { required: true, tracked: true }
|
|
12
|
+
Open questions: { offered: "Questions left open, each with what it is about, to settle later. They do not block approval: the approval summary lists them." }
|
|
12
13
|
Notes: {}
|
|
13
14
|
---
|
|
14
15
|
|