silvermoon 0.1.3 → 0.2.0-rc.1
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 +40 -24
- package/README.zh-CN.md +36 -24
- package/docs/core-concepts.md +28 -11
- package/docs/getting-started.md +41 -9
- package/docs/npm-package-releases.md +8 -7
- package/docs/operations.md +60 -23
- package/docs/reference.md +125 -67
- package/docs/repository-tasks.md +29 -23
- package/package.json +3 -3
- package/schema/v1/command-report.schema.json +178 -0
- package/schema/v1/domain-message.schema.json +278 -0
- package/schema/v2/trace-event.schema.json +122 -0
- package/skills/silvermoon/SKILL.md +36 -25
- package/skills/silvermoon/references/adoption.md +8 -9
- package/src/cli.js +63 -9
- package/src/create-idea.js +260 -193
- package/src/dialogue.js +6 -305
- package/src/domain.js +592 -0
- package/src/idea-query.js +230 -0
- package/src/ideas.js +1 -0
- package/src/index.js +76 -31
- package/src/language.js +8 -0
- package/src/list-ideas.js +133 -0
- package/src/response.js +443 -0
- package/src/trace.js +90 -4
- package/src/whatsnext.js +81 -84
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<!-- markdownlint-disable-next-line MD013 -->
|
|
5
|
-
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@
|
|
5
|
+
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/assets/silvermoon.svg" width="960" alt="Silvermoon, the artifact spirit of the project">
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
</p>
|
|
18
18
|
|
|
19
19
|
<p align="center">
|
|
20
|
-
English | <a href="https://github.com/shazhou-ww/silvermoon/blob/
|
|
20
|
+
English | <a href="https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/README.zh-CN.md">简体中文</a>
|
|
21
21
|
</p>
|
|
22
22
|
|
|
23
23
|
# Silvermoon
|
|
@@ -32,6 +32,7 @@ branch.
|
|
|
32
32
|
```sh
|
|
33
33
|
npm install --global silvermoon
|
|
34
34
|
silvermoon whats-next
|
|
35
|
+
silvermoon list-ideas
|
|
35
36
|
```
|
|
36
37
|
|
|
37
38
|
Silvermoon is ecosystem-neutral: the target repository does not need
|
|
@@ -57,6 +58,13 @@ These stored values choose the language for project-owned content. To change
|
|
|
57
58
|
only one command's built-in output, use `whats-next --language en-US|zh-CN` or
|
|
58
59
|
`check --language en-US|zh-CN`; the temporary override is never persisted.
|
|
59
60
|
|
|
61
|
+
Use `list-ideas` when you only need the current local inventory. It defaults to
|
|
62
|
+
active ideas and supports repeatable `--state`, `--all`, literal `--query`,
|
|
63
|
+
RFC 3339 `--created-since` / `--created-before`, `--sort`, and `--limit`.
|
|
64
|
+
Unlike lifecycle navigation, this read-only query uses the valid worktree
|
|
65
|
+
snapshot without checking branch, upstream, cleanliness, network, or primary
|
|
66
|
+
synchronization.
|
|
67
|
+
|
|
60
68
|
Then create an idea and let the registered Silvermoon skill guide one safe
|
|
61
69
|
next action at a time:
|
|
62
70
|
|
|
@@ -69,27 +77,35 @@ silvermoon whats-next <idea> --language zh-CN
|
|
|
69
77
|
Describe the desired world in the generated `Idea.md`, review it, and approve
|
|
70
78
|
that exact revision. From then on, Silvermoon keeps the goal, implementation,
|
|
71
79
|
repository state, and real-world result connected. See
|
|
72
|
-
[Getting Started](https://github.com/shazhou-ww/silvermoon/blob/
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
80
|
+
[Getting Started](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/getting-started.md) for the complete first workflow.
|
|
81
|
+
Every command processes one ordered, versioned domain-message stream. Add
|
|
82
|
+
`--json` when a programmatic consumer needs its four deterministic projections:
|
|
83
|
+
`intention`, `observation`, `actions`, and `response`. Actions are side effects
|
|
84
|
+
already attempted; future work belongs only to `response.nextSteps`. Default
|
|
85
|
+
Markdown renders only the self-contained response instead of exposing the
|
|
86
|
+
internal projections. For pre-commit validation, run
|
|
87
|
+
`silvermoon check --staged`: unlike the default `check` (committed `HEAD`), it
|
|
88
|
+
checks the index and exits `0` only when the project snapshot is valid. See the
|
|
89
|
+
[Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/reference.md) for validation targets and exit
|
|
90
|
+
codes.
|
|
91
|
+
|
|
92
|
+
Add `--trace <file.trace.jsonl>` to any command to write one schema-versioned
|
|
93
|
+
JSONL timeline. Its `domain` channel contains allowlisted message summaries,
|
|
94
|
+
and its `telemetry` channel contains paired performance spans; both share one
|
|
95
|
+
trace ID and global sequence. Trace output never includes guidance or file
|
|
96
|
+
content, Git arguments/output, environment data, or credentials. If the
|
|
97
|
+
argument does not end with the exact lowercase `.trace.jsonl` suffix,
|
|
83
98
|
Silvermoon appends it. Repository-local `*.trace.jsonl` files are ignored.
|
|
84
|
-
Trace files are created only after
|
|
85
|
-
|
|
99
|
+
Trace files are buffered, created only after command work completes, and never
|
|
100
|
+
overwrite an existing file.
|
|
86
101
|
|
|
87
102
|
Projects may optionally add `.silvermoon/guidance/preparing.md`,
|
|
88
103
|
`implementing.md`, and `deploying.md`. Silvermoon returns only the current
|
|
89
|
-
actionable phase's snapshot-bound, repository-owned Markdown
|
|
90
|
-
|
|
104
|
+
actionable phase's snapshot-bound, repository-owned Markdown in
|
|
105
|
+
`response.guidance`; `observation.guidance` carries its provenance without
|
|
106
|
+
content. `create-idea` can return preparing guidance. This guidance is
|
|
91
107
|
additive, never a fourth contract or decision fact, and `check` validates the
|
|
92
|
-
complete fixed directory. See [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/
|
|
108
|
+
complete fixed directory. See [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/core-concepts.md).
|
|
93
109
|
|
|
94
110
|
## Why Silvermoon
|
|
95
111
|
|
|
@@ -119,7 +135,7 @@ sessions, Agents, and hosting platforms.
|
|
|
119
135
|
<tr>
|
|
120
136
|
<td width="160" align="center" valign="top">
|
|
121
137
|
<!-- markdownlint-disable-next-line MD013 -->
|
|
122
|
-
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@
|
|
138
|
+
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/assets/silvermoon-avatar.svg" width="128" alt="Line portrait of Silvermoon, the project's artifact spirit">
|
|
123
139
|
</td>
|
|
124
140
|
<td valign="top">
|
|
125
141
|
Silvermoon is named after a character in <em>A Record of a Mortal's
|
|
@@ -167,13 +183,13 @@ the project, not to a fleeting conversation.
|
|
|
167
183
|
|
|
168
184
|
## Further Reading
|
|
169
185
|
|
|
170
|
-
- [Getting Started](https://github.com/shazhou-ww/silvermoon/blob/
|
|
186
|
+
- [Getting Started](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/getting-started.md) — installation, configuration,
|
|
171
187
|
and the first idea.
|
|
172
|
-
- [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/
|
|
188
|
+
- [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/core-concepts.md) — project ownership, the three
|
|
173
189
|
worlds, revisions, and decision boundaries.
|
|
174
|
-
- [Operating Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/
|
|
190
|
+
- [Operating Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/operations.md) — navigation, creation,
|
|
175
191
|
publication, hygiene, and continuation.
|
|
176
|
-
- [Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/
|
|
192
|
+
- [Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/reference.md) — storage, derived state, CLI
|
|
177
193
|
reports, validation targets, and schemas.
|
|
178
|
-
- [Maintaining Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/
|
|
194
|
+
- [Maintaining Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/maintaining.md) — development checks,
|
|
179
195
|
documentation ownership, and release guidance.
|
package/README.zh-CN.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<!-- markdownlint-disable-next-line MD013 -->
|
|
5
|
-
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@
|
|
5
|
+
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/assets/silvermoon.svg" width="960" alt="Silvermoon,项目的器灵">
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="https://github.com/shazhou-ww/silvermoon/blob/
|
|
9
|
+
<a href="https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/README.md">English</a> | 简体中文
|
|
10
10
|
</p>
|
|
11
11
|
|
|
12
12
|
# Silvermoon(银月)
|
|
@@ -20,6 +20,7 @@ Silvermoon 需要 Node.js 22 或更高版本,并且能够通过 Git 访问仓
|
|
|
20
20
|
```sh
|
|
21
21
|
npm install --global silvermoon
|
|
22
22
|
silvermoon whats-next
|
|
23
|
+
silvermoon list-ideas
|
|
23
24
|
```
|
|
24
25
|
|
|
25
26
|
Silvermoon 不依赖目标仓库的技术栈:目标项目无需 `package.json`、package manager、
|
|
@@ -43,6 +44,12 @@ preferredLanguage: zh-CN
|
|
|
43
44
|
`whats-next --language en-US|zh-CN` 或 `check --language en-US|zh-CN`;该临时覆盖
|
|
44
45
|
不会写入任何配置或 idea。
|
|
45
46
|
|
|
47
|
+
只想查看当前本地 inventory 时使用 `list-ideas`。它默认返回 active ideas,并支持
|
|
48
|
+
可重复的 `--state`、`--all`、literal `--query`、RFC 3339
|
|
49
|
+
`--created-since` / `--created-before`、`--sort` 和 `--limit`。与 lifecycle
|
|
50
|
+
导航不同,这个只读查询使用有效的 worktree snapshot,不检查 branch、upstream、
|
|
51
|
+
cleanliness、网络或 primary 同步。
|
|
52
|
+
|
|
46
53
|
然后创建一个 idea,让已注册的 Silvermoon skill 每次引导一个安全的下一步行动:
|
|
47
54
|
|
|
48
55
|
```sh
|
|
@@ -53,24 +60,29 @@ silvermoon whats-next <idea> --language zh-CN
|
|
|
53
60
|
|
|
54
61
|
在生成的 `Idea.md` 中描述想要抵达的世界,审阅并批准这个精确 revision。此后,
|
|
55
62
|
Silvermoon 会让目标、实现、仓库状态与现实结果始终相连。完整的首次工作流见英文
|
|
56
|
-
[Getting Started](https://github.com/shazhou-ww/silvermoon/blob/
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
`
|
|
60
|
-
`
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
[Getting Started](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/getting-started.md)。
|
|
64
|
+
每个命令都处理一条有序且带版本的 domain-message stream。程序消费者可使用
|
|
65
|
+
`--json` 获取四个确定性 projection:`intention`、`observation`、`actions` 与
|
|
66
|
+
`response`。`actions` 只记录已经尝试的副作用,未来工作只位于
|
|
67
|
+
`response.nextSteps`。默认 Markdown 只渲染自足的 response,不暴露内部
|
|
68
|
+
projection。提交前使用 `silvermoon check --staged` 验证 index;无参数 `check`
|
|
69
|
+
只验证已提交的 `HEAD`,不能替代提交前检查。只有项目快照有效时检查才以退出码
|
|
70
|
+
`0` 放行,详见英文 [Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/reference.md)。
|
|
71
|
+
|
|
72
|
+
任何命令都可以添加 `--trace <file.trace.jsonl>`,写出一条 schema-versioned
|
|
73
|
+
JSONL timeline。`domain` channel 保存经过 allowlist 的 message 摘要,
|
|
74
|
+
`telemetry` channel 保存成对 performance span;两者共享同一个 trace ID 和全局
|
|
75
|
+
sequence。Trace 不记录 guidance/文件正文、Git 参数或输出、环境数据或
|
|
76
|
+
credential。参数若没有以精确的小写 `.trace.jsonl` 结尾,Silvermoon 会自动追加;
|
|
77
|
+
repository 内的 `*.trace.jsonl` 会被忽略。trace 文件采用缓冲写入,只在命令工作
|
|
78
|
+
完成后创建,并且绝不覆盖已有文件。
|
|
67
79
|
|
|
68
80
|
项目可按需添加 `.silvermoon/guidance/preparing.md`、`implementing.md` 与
|
|
69
|
-
`deploying.md`。Silvermoon 只会在
|
|
70
|
-
|
|
71
|
-
preparing guidance。这些 guidance
|
|
72
|
-
fact;`check` 会验证完整的固定目录。详见英文
|
|
73
|
-
[Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/
|
|
81
|
+
`deploying.md`。Silvermoon 只会在 `response.guidance` 中返回当前可行动阶段里
|
|
82
|
+
与 snapshot 绑定的 repository-owned Markdown;`observation.guidance` 仅保留
|
|
83
|
+
provenance。`create-idea` 可返回 preparing guidance。这些 guidance 只能追加
|
|
84
|
+
约束,不是第四份 contract 或 decision fact;`check` 会验证完整的固定目录。详见英文
|
|
85
|
+
[Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/core-concepts.md)。
|
|
74
86
|
|
|
75
87
|
## 为什么需要 Silvermoon
|
|
76
88
|
|
|
@@ -93,7 +105,7 @@ fact;`check` 会验证完整的固定目录。详见英文
|
|
|
93
105
|
<tr>
|
|
94
106
|
<td width="160" align="center" valign="top">
|
|
95
107
|
<!-- markdownlint-disable-next-line MD013 -->
|
|
96
|
-
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@
|
|
108
|
+
<img src="https://cdn.jsdelivr.net/gh/shazhou-ww/silvermoon@fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/assets/silvermoon-avatar.svg" width="128" alt="项目器灵银月的线稿头像">
|
|
97
109
|
</td>
|
|
98
110
|
<td valign="top">
|
|
99
111
|
Silvermoon 得名于《凡人修仙传》中的银月。她来自灵界的银月狼族,是玲珑公主分裂出的
|
|
@@ -133,8 +145,8 @@ fact;`check` 会验证完整的固定目录。详见英文
|
|
|
133
145
|
|
|
134
146
|
## 延伸阅读
|
|
135
147
|
|
|
136
|
-
- [Getting Started](https://github.com/shazhou-ww/silvermoon/blob/
|
|
137
|
-
- [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/
|
|
138
|
-
- [Operating Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/
|
|
139
|
-
- [Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/
|
|
140
|
-
- [Maintaining Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/
|
|
148
|
+
- [Getting Started](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/getting-started.md) — 安装、配置与第一个 idea。
|
|
149
|
+
- [Core Concepts](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/core-concepts.md) — 项目归属、三重世界、revision 与决策边界。
|
|
150
|
+
- [Operating Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/operations.md) — 导航、创建、发布、仓库卫生与持续推进。
|
|
151
|
+
- [Technical Reference](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/reference.md) — 存储、派生状态、CLI report、验证 target 与 schema。
|
|
152
|
+
- [Maintaining Silvermoon](https://github.com/shazhou-ww/silvermoon/blob/fcc881a6a5e7b7f2aad283f3b151a4c15fd6f400/docs/maintaining.md) — 开发检查、文档职责与发布指南。
|
package/docs/core-concepts.md
CHANGED
|
@@ -55,10 +55,25 @@ implementation, acceptance of the deployment, and abandonment. Silvermoon has
|
|
|
55
55
|
no mutation command for these decisions and never infers them from prose,
|
|
56
56
|
checklists, Git activity, or silence.
|
|
57
57
|
|
|
58
|
-
Agents own continuation. The project skill combines `whats-next`,
|
|
59
|
-
contracts, the idea ledger, and Git facts to
|
|
60
|
-
is operational memory: it mirrors stable
|
|
61
|
-
work, but a checked item is not approval or
|
|
58
|
+
Agents own continuation. The project skill combines `whats-next`,
|
|
59
|
+
`response.nextSteps`, the world contracts, the idea ledger, and Git facts to
|
|
60
|
+
choose one safe action. The ledger is operational memory: it mirrors stable
|
|
61
|
+
contract IDs and records completed work, but a checked item is not approval or
|
|
62
|
+
acceptance.
|
|
63
|
+
|
|
64
|
+
## Command Event Model
|
|
65
|
+
|
|
66
|
+
A normalized intention starts one ordered, versioned domain-message stream.
|
|
67
|
+
Observation facts are folded by one immutable reducer, while requested and
|
|
68
|
+
finished side effects are paired by action ID into the actions projection.
|
|
69
|
+
The final response is a pure function of intention and internal observation;
|
|
70
|
+
it never reads action history, trace state, clocks, randomness, Git, or the
|
|
71
|
+
filesystem.
|
|
72
|
+
|
|
73
|
+
Every trustworthy JSON result has exactly four top-level projections:
|
|
74
|
+
`intention`, `observation`, `actions`, and `response`. Default Markdown renders
|
|
75
|
+
only `response`. This keeps operational history available to machines without
|
|
76
|
+
making people read an internal execution transcript to find the answer.
|
|
62
77
|
|
|
63
78
|
## Project Phase Guidance
|
|
64
79
|
|
|
@@ -69,18 +84,20 @@ phase's file, after higher-priority project and repository readiness checks,
|
|
|
69
84
|
and identifies its exact Git blob as `contentRevision`.
|
|
70
85
|
|
|
71
86
|
Phase guidance is additive: it supplements rather than replaces the canonical
|
|
72
|
-
skill and
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
skill and `response.nextSteps`. Public observation carries only provenance;
|
|
88
|
+
the self-contained response carries the captured content. An Agent treats it
|
|
89
|
+
as inert repository-owned Markdown and materializes applicable idea-specific
|
|
90
|
+
requirements into the current world contract and matching ledger entries. The
|
|
91
|
+
guidance file is not a fourth contract, does not change a world revision,
|
|
92
|
+
records no human decision, and is not evidence that any work or validation
|
|
93
|
+
completed.
|
|
77
94
|
|
|
78
95
|
## One Project, Shared Facts
|
|
79
96
|
|
|
80
97
|
`whats-next` first checks local worktree, HEAD, and upstream facts, then fetches
|
|
81
98
|
the configured remote primary only when local hygiene permits it. Its
|
|
82
|
-
observation and
|
|
83
|
-
|
|
99
|
+
observation and response report the exact local and remote commits used for
|
|
100
|
+
ancestry guidance. Writers use the reported remote commit as the expected
|
|
84
101
|
shared tip. If primary moves, they fetch and reobserve rather than replaying a
|
|
85
102
|
stale decision. This is coordination through ordinary Git, not a distributed
|
|
86
103
|
lock.
|
package/docs/getting-started.md
CHANGED
|
@@ -64,8 +64,9 @@ Each file is optional, repository-owned Markdown for only its named phase.
|
|
|
64
64
|
`whats-next <idea>` returns the applicable file only after that actionable
|
|
65
65
|
phase becomes the highest-priority next action. A successful `create-idea`
|
|
66
66
|
returns only preparing guidance after local preflight and before relying on
|
|
67
|
-
the new scaffold.
|
|
68
|
-
`contentRevision
|
|
67
|
+
the new scaffold. `observation.guidance` includes the fixed path and exact Git
|
|
68
|
+
blob `contentRevision`; `response.guidance` carries that provenance plus the
|
|
69
|
+
captured content, so consumers must not reread the file.
|
|
69
70
|
|
|
70
71
|
Keep each file at most 32 KiB of valid UTF-8 without a BOM or NUL byte, with at
|
|
71
72
|
least one non-whitespace character. Use regular files and no extra entries in
|
|
@@ -114,6 +115,37 @@ the resolved content language and can therefore differ from `outputLanguage`.
|
|
|
114
115
|
Without a temporary override, Chinese content tags use `zh-CN` output and all
|
|
115
116
|
other content tags use the built-in `en-US` output.
|
|
116
117
|
|
|
118
|
+
## Inspect The Local Idea Inventory
|
|
119
|
+
|
|
120
|
+
Use the dedicated read-only query when the question is which ideas exist,
|
|
121
|
+
rather than what lifecycle action comes next:
|
|
122
|
+
|
|
123
|
+
```sh
|
|
124
|
+
silvermoon list-ideas
|
|
125
|
+
silvermoon list-ideas --state implementing --state deploying
|
|
126
|
+
silvermoon list-ideas --all --query release --sort oldest --limit 20
|
|
127
|
+
silvermoon list-ideas \
|
|
128
|
+
--created-since 2026-09-01T00:00:00Z \
|
|
129
|
+
--created-before 2026-10-01T00:00:00Z
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The default set is `preparing`, `implementing`, and `deploying`. Repeated state
|
|
133
|
+
values form a deduplicated union, while text and time filters intersect with
|
|
134
|
+
that set. `active` expands to the default three states; `--all` selects all
|
|
135
|
+
five lifecycle states and cannot be combined with `--state`. Sorting is
|
|
136
|
+
newest-first unless `--sort oldest` is given, and `--limit` is applied only
|
|
137
|
+
after filtering and stable sorting.
|
|
138
|
+
|
|
139
|
+
`list-ideas` validates Git presence, project configuration, the canonical
|
|
140
|
+
skill, and the complete idea layout, then reads the current worktree snapshot.
|
|
141
|
+
It does not inspect cleanliness, branch, upstream, or ancestry and never
|
|
142
|
+
fetches or contacts the configured primary. Staged, unstaged, and untracked
|
|
143
|
+
idea changes are therefore visible when they form a valid snapshot. Invalid
|
|
144
|
+
query arguments fail with exit `2` before repository or trace access; an
|
|
145
|
+
untrusted project or layout exits `1` instead of returning a partial list.
|
|
146
|
+
The command has no temporary `--language` option and uses the project's
|
|
147
|
+
resolved output language.
|
|
148
|
+
|
|
117
149
|
## Create The First Idea
|
|
118
150
|
|
|
119
151
|
Run:
|
|
@@ -149,13 +181,13 @@ Then ask what comes next with the generated ULID or an exact unique alias:
|
|
|
149
181
|
silvermoon whats-next <idea>
|
|
150
182
|
```
|
|
151
183
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
184
|
+
Default Markdown renders only the self-contained response. Add `--json` when a
|
|
185
|
+
programmatic consumer needs the complete
|
|
186
|
+
`intention / observation / actions / response` report. Read every problem and
|
|
187
|
+
execute applicable `response.nextSteps` in order; `actions` contains only
|
|
188
|
+
side effects Silvermoon already attempted. Run the same command again only
|
|
189
|
+
after an expected repository change, an unexpected input change, or a newly
|
|
190
|
+
arrived external result.
|
|
159
191
|
|
|
160
192
|
## Make Decisions Explicit
|
|
161
193
|
|
|
@@ -11,10 +11,11 @@ The current release mapping is:
|
|
|
11
11
|
| --- | --- | --- |
|
|
12
12
|
| `silvermoon` | `silvermoon` | `.` |
|
|
13
13
|
|
|
14
|
-
A stable tag such as `npm/silvermoon/v0.
|
|
15
|
-
dist-tag. A named prerelease such as `npm/silvermoon/v0.2.0-
|
|
16
|
-
with the `
|
|
17
|
-
rejected.
|
|
14
|
+
A stable tag such as `npm/silvermoon/v0.2.0` publishes with the npm `latest`
|
|
15
|
+
dist-tag. A named prerelease such as `npm/silvermoon/v0.2.0-rc.1` publishes
|
|
16
|
+
with the `rc` dist-tag. Numeric-only prerelease channels are intentionally
|
|
17
|
+
rejected. Preparing a manifest candidate does not authorize tag creation or
|
|
18
|
+
publication.
|
|
18
19
|
|
|
19
20
|
## One-time configuration
|
|
20
21
|
|
|
@@ -76,12 +77,12 @@ the release namespace.
|
|
|
76
77
|
5. Fetch the current primary branch and tags.
|
|
77
78
|
6. Create the package-specific tag at `origin/main` and push that exact tag.
|
|
78
79
|
|
|
79
|
-
For `silvermoon@0.1
|
|
80
|
+
For an explicitly authorized `silvermoon@0.2.0-rc.1` release:
|
|
80
81
|
|
|
81
82
|
```sh
|
|
82
83
|
git fetch origin main --tags
|
|
83
|
-
git tag npm/silvermoon/v0.1
|
|
84
|
-
git push origin refs/tags/npm/silvermoon/v0.1
|
|
84
|
+
git tag npm/silvermoon/v0.2.0-rc.1 origin/main
|
|
85
|
+
git push origin refs/tags/npm/silvermoon/v0.2.0-rc.1
|
|
85
86
|
```
|
|
86
87
|
|
|
87
88
|
The tag version must exactly equal [`package.json`](../package.json). The
|
package/docs/operations.md
CHANGED
|
@@ -20,13 +20,13 @@ uppercase ULID or an exact, unique, case-sensitive alias.
|
|
|
20
20
|
|
|
21
21
|
The shared observation exposes the resolved content preference as
|
|
22
22
|
`configuration.preferredLanguage` and the built-in rendering locale as
|
|
23
|
-
`outputLanguage`.
|
|
24
|
-
same-world supporting artifacts, and the ledger. A caller may use
|
|
23
|
+
`outputLanguage`. Response next steps use the content preference for world
|
|
24
|
+
entries, same-world supporting artifacts, and the ledger. A caller may use
|
|
25
25
|
`--language en-US|zh-CN` to override only Silvermoon-owned output for one
|
|
26
26
|
`whats-next` invocation. Commands, identifiers, schema fields, protocol
|
|
27
27
|
markers, and verbatim tool output retain their original form.
|
|
28
28
|
|
|
29
|
-
Every invocation follows three strict layers. It first checks Git,
|
|
29
|
+
Every `whats-next` invocation follows three strict layers. It first checks Git,
|
|
30
30
|
configuration compatibility, and `.agents/skills/silvermoon`. It then checks
|
|
31
31
|
local conflicts, changes, HEAD, and upstream identity before any remote access.
|
|
32
32
|
Only after those checks pass does it fetch primary, compare ancestry, and
|
|
@@ -36,12 +36,48 @@ resets, fast-forwards, or pushes.
|
|
|
36
36
|
When a selector resolves to an actionable phase and synchronization is ready,
|
|
37
37
|
Silvermoon reads only `.silvermoon/guidance/<phase>.md` from the same Git
|
|
38
38
|
snapshot. Missing guidance preserves the previous report shape. Valid guidance
|
|
39
|
-
appears
|
|
40
|
-
|
|
41
|
-
`phase-guidance-invalid` observation with remediation instead of
|
|
42
|
-
|
|
39
|
+
content appears in `response.guidance`, while `observation.guidance` exposes
|
|
40
|
+
only its path, phase, and content revision. Invalid current-phase guidance
|
|
41
|
+
returns a `phase-guidance-invalid` observation with remediation instead of
|
|
42
|
+
lifecycle next steps. Bare navigation, unknown selectors, terminal ideas, and any
|
|
43
43
|
higher-priority setup, hygiene, fetch, or ancestry block do not read guidance.
|
|
44
44
|
|
|
45
|
+
## Query The Local Inventory
|
|
46
|
+
|
|
47
|
+
Use `list-ideas` for an explicit inventory query that must not choose work or
|
|
48
|
+
perform repository synchronization:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
silvermoon list-ideas
|
|
52
|
+
silvermoon list-ideas --state active --state completed
|
|
53
|
+
silvermoon list-ideas --all --query documentation
|
|
54
|
+
silvermoon list-ideas --created-since 2026-09-01T00:00:00Z
|
|
55
|
+
silvermoon list-ideas --created-before 2026-10-01T00:00:00Z
|
|
56
|
+
silvermoon list-ideas --sort oldest --limit 25 --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The command reads one valid local worktree snapshot. It checks the project
|
|
60
|
+
configuration, canonical skill, and complete idea layout, but deliberately
|
|
61
|
+
does not check conflicts, cleanliness, current branch, upstream, primary
|
|
62
|
+
ancestry, or network availability. It never fetches. Filters cannot hide an
|
|
63
|
+
invalid idea; setup or layout failures return a `blocked` four-projection
|
|
64
|
+
report and exit `1`.
|
|
65
|
+
|
|
66
|
+
The default state set is `preparing`, `implementing`, and `deploying`.
|
|
67
|
+
Repeated `--state` values form a deduplicated union, `active` expands to those
|
|
68
|
+
three states, and `--all` selects all five states but conflicts with
|
|
69
|
+
`--state`. Literal case-insensitive `--query` matches ULID, alias, or the first
|
|
70
|
+
level-one heading in `Idea.md`. Creation bounds are RFC 3339 timestamps and use
|
|
71
|
+
`[created-since, created-before)` against UTC time decoded from the ULID.
|
|
72
|
+
`--sort newest|oldest` is stable for same-millisecond IDs, and positive
|
|
73
|
+
`--limit` is applied after filtering and sorting while preserving full
|
|
74
|
+
matched counts.
|
|
75
|
+
|
|
76
|
+
Success uses `observation.state: "ideas-listed"`, records no actions, and
|
|
77
|
+
returns an `idea-list` response without lifecycle instructions. Usage errors
|
|
78
|
+
exit `2` before repository inspection or trace creation. `list-ideas` does not
|
|
79
|
+
accept the temporary `--language` option.
|
|
80
|
+
|
|
45
81
|
## Create An Idea
|
|
46
82
|
|
|
47
83
|
Explicit creation uses:
|
|
@@ -79,18 +115,17 @@ publication requires a pull request, wait until it reaches primary. Reobserve
|
|
|
79
115
|
the exact `idealRevision` after publication; never ask for approval of an
|
|
80
116
|
unpublished local candidate, and never treat publication as approval.
|
|
81
117
|
|
|
82
|
-
## Follow One
|
|
118
|
+
## Follow One Report
|
|
83
119
|
|
|
84
|
-
Treat `intention`, `observation`, `
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
none were attempted.
|
|
120
|
+
Treat `intention`, `observation`, `actions`, and `response` as one immutable
|
|
121
|
+
report for every command. Default output renders only `response`; `--json`
|
|
122
|
+
serializes all four projections and retains `actions: []` when no side effect
|
|
123
|
+
was attempted. Actions are historical facts. Future work appears only in
|
|
124
|
+
`response.nextSteps`.
|
|
90
125
|
|
|
91
126
|
Project setup takes precedence over repository synchronization, which takes
|
|
92
|
-
precedence over lifecycle work.
|
|
93
|
-
for the current layer in priority order. Large change sets report complete
|
|
127
|
+
precedence over lifecycle work. Response next steps include every known
|
|
128
|
+
remediation for the current layer in priority order. Large change sets report complete
|
|
94
129
|
counts, bounded path samples, omitted counts, and exact commands for the full
|
|
95
130
|
diff. Preserve unknown and concurrent work. Never force-push, use
|
|
96
131
|
`reset --hard`, broadly clean the worktree, or silently rewrite history.
|
|
@@ -99,9 +134,10 @@ After an observable change, run `whats-next` again. Do not poll an unchanged
|
|
|
99
134
|
observation. When the invocation used `--language`, every generated retry
|
|
100
135
|
command preserves the same canonical output-language option.
|
|
101
136
|
|
|
102
|
-
If `
|
|
137
|
+
If `response.guidance` is present, consume that captured content rather than
|
|
103
138
|
reading its path again. It is repository-owned additive input. Canonical
|
|
104
|
-
|
|
139
|
+
`response.nextSteps` and higher-level human or system instructions take
|
|
140
|
+
precedence.
|
|
105
141
|
Treat guidance as inert Markdown: do not expand
|
|
106
142
|
templates or includes, follow embedded URLs, or execute snippets. Materialize
|
|
107
143
|
applicable requirements into the current world contract and matching ledger
|
|
@@ -152,11 +188,12 @@ check worktree hygiene, upstream, or ancestry and does not suggest next steps.
|
|
|
152
188
|
Without a target it validates committed `HEAD`, not the pending commit.
|
|
153
189
|
`--worktree` validates the full candidate, while `--staged` validates exactly
|
|
154
190
|
the index and is the pre-commit hook target. Every target validates all present
|
|
155
|
-
phase guidance files and rejects extra entries. Its JSON
|
|
156
|
-
`
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
191
|
+
phase guidance files and rejects extra entries. Its JSON uses all four
|
|
192
|
+
projections. `actions` is normally empty, except that `check --remote` records
|
|
193
|
+
its fetch, and `response` is a `validation-result`; no guidance content is
|
|
194
|
+
returned. Exit status `0` means the chosen project snapshot is valid; `1`
|
|
195
|
+
means invalid or unavailable and must block the commit; `2` means invalid CLI
|
|
196
|
+
usage. Do not treat the existence of a report as permission to commit.
|
|
160
197
|
|
|
161
198
|
`check --language en-US|zh-CN` changes only Silvermoon-owned report framing.
|
|
162
199
|
It is orthogonal to every check target and never changes the selected snapshot,
|