mindsystem-cc 3.0.0 → 3.2.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 +179 -332
- package/agents/ms-executor.md +0 -1
- package/agents/ms-roadmapper.md +0 -1
- package/bin/install.js +2 -2
- package/commands/ms/help.md +0 -30
- package/commands/ms/linear.md +231 -0
- package/commands/ms/progress.md +16 -2
- package/commands/ms/remove-phase.md +0 -2
- package/mindsystem/templates/state.md +0 -13
- package/mindsystem/workflows/execute-plan.md +0 -1
- package/mindsystem/workflows/transition.md +0 -14
- package/package.json +1 -1
- package/scripts/ms-linear/ms_linear/__init__.py +3 -0
- package/scripts/ms-linear/ms_linear/__main__.py +6 -0
- package/scripts/ms-linear/ms_linear/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/__main__.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/cli.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/client.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/config.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/errors.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/__pycache__/output.cpython-314.pyc +0 -0
- package/scripts/ms-linear/ms_linear/cli.py +604 -0
- package/scripts/ms-linear/ms_linear/client.py +503 -0
- package/scripts/ms-linear/ms_linear/config.py +102 -0
- package/scripts/ms-linear/ms_linear/errors.py +29 -0
- package/scripts/ms-linear/ms_linear/output.py +45 -0
- package/scripts/ms-linear/pyproject.toml +16 -0
- package/scripts/ms-linear/uv.lock +196 -0
- package/scripts/ms-linear-wrapper.sh +21 -0
- package/commands/ms/pause-work.md +0 -123
- package/commands/ms/resume-work.md +0 -40
- package/mindsystem/templates/continue-here.md +0 -78
- package/mindsystem/workflows/resume-project.md +0 -311
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
version = 1
|
|
2
|
+
revision = 3
|
|
3
|
+
requires-python = ">=3.10"
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "anyio"
|
|
7
|
+
version = "4.12.1"
|
|
8
|
+
source = { registry = "https://pypi.org/simple" }
|
|
9
|
+
dependencies = [
|
|
10
|
+
{ name = "exceptiongroup", marker = "python_full_version < '3.11'" },
|
|
11
|
+
{ name = "idna" },
|
|
12
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
13
|
+
]
|
|
14
|
+
sdist = { url = "https://files.pythonhosted.org/packages/96/f0/5eb65b2bb0d09ac6776f2eb54adee6abe8228ea05b20a5ad0e4945de8aac/anyio-4.12.1.tar.gz", hash = "sha256:41cfcc3a4c85d3f05c932da7c26d0201ac36f72abd4435ba90d0464a3ffed703", size = 228685, upload-time = "2026-01-06T11:45:21.246Z" }
|
|
15
|
+
wheels = [
|
|
16
|
+
{ url = "https://files.pythonhosted.org/packages/38/0e/27be9fdef66e72d64c0cdc3cc2823101b80585f8119b5c112c2e8f5f7dab/anyio-4.12.1-py3-none-any.whl", hash = "sha256:d405828884fc140aa80a3c667b8beed277f1dfedec42ba031bd6ac3db606ab6c", size = 113592, upload-time = "2026-01-06T11:45:19.497Z" },
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
[[package]]
|
|
20
|
+
name = "certifi"
|
|
21
|
+
version = "2026.1.4"
|
|
22
|
+
source = { registry = "https://pypi.org/simple" }
|
|
23
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/2d/a891ca51311197f6ad14a7ef42e2399f36cf2f9bd44752b3dc4eab60fdc5/certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120", size = 154268, upload-time = "2026-01-04T02:42:41.825Z" }
|
|
24
|
+
wheels = [
|
|
25
|
+
{ url = "https://files.pythonhosted.org/packages/e6/ad/3cc14f097111b4de0040c83a525973216457bbeeb63739ef1ed275c1c021/certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c", size = 152900, upload-time = "2026-01-04T02:42:40.15Z" },
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
[[package]]
|
|
29
|
+
name = "click"
|
|
30
|
+
version = "8.3.1"
|
|
31
|
+
source = { registry = "https://pypi.org/simple" }
|
|
32
|
+
dependencies = [
|
|
33
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
34
|
+
]
|
|
35
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
|
|
36
|
+
wheels = [
|
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
[[package]]
|
|
41
|
+
name = "colorama"
|
|
42
|
+
version = "0.4.6"
|
|
43
|
+
source = { registry = "https://pypi.org/simple" }
|
|
44
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
45
|
+
wheels = [
|
|
46
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
[[package]]
|
|
50
|
+
name = "exceptiongroup"
|
|
51
|
+
version = "1.3.1"
|
|
52
|
+
source = { registry = "https://pypi.org/simple" }
|
|
53
|
+
dependencies = [
|
|
54
|
+
{ name = "typing-extensions", marker = "python_full_version < '3.13'" },
|
|
55
|
+
]
|
|
56
|
+
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
|
|
57
|
+
wheels = [
|
|
58
|
+
{ url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[[package]]
|
|
62
|
+
name = "h11"
|
|
63
|
+
version = "0.16.0"
|
|
64
|
+
source = { registry = "https://pypi.org/simple" }
|
|
65
|
+
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" }
|
|
66
|
+
wheels = [
|
|
67
|
+
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" },
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
[[package]]
|
|
71
|
+
name = "httpcore"
|
|
72
|
+
version = "1.0.9"
|
|
73
|
+
source = { registry = "https://pypi.org/simple" }
|
|
74
|
+
dependencies = [
|
|
75
|
+
{ name = "certifi" },
|
|
76
|
+
{ name = "h11" },
|
|
77
|
+
]
|
|
78
|
+
sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" }
|
|
79
|
+
wheels = [
|
|
80
|
+
{ url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" },
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "httpx"
|
|
85
|
+
version = "0.28.1"
|
|
86
|
+
source = { registry = "https://pypi.org/simple" }
|
|
87
|
+
dependencies = [
|
|
88
|
+
{ name = "anyio" },
|
|
89
|
+
{ name = "certifi" },
|
|
90
|
+
{ name = "httpcore" },
|
|
91
|
+
{ name = "idna" },
|
|
92
|
+
]
|
|
93
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" }
|
|
94
|
+
wheels = [
|
|
95
|
+
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" },
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[[package]]
|
|
99
|
+
name = "idna"
|
|
100
|
+
version = "3.11"
|
|
101
|
+
source = { registry = "https://pypi.org/simple" }
|
|
102
|
+
sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
|
|
103
|
+
wheels = [
|
|
104
|
+
{ url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
[[package]]
|
|
108
|
+
name = "markdown-it-py"
|
|
109
|
+
version = "4.0.0"
|
|
110
|
+
source = { registry = "https://pypi.org/simple" }
|
|
111
|
+
dependencies = [
|
|
112
|
+
{ name = "mdurl" },
|
|
113
|
+
]
|
|
114
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" }
|
|
115
|
+
wheels = [
|
|
116
|
+
{ url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" },
|
|
117
|
+
]
|
|
118
|
+
|
|
119
|
+
[[package]]
|
|
120
|
+
name = "mdurl"
|
|
121
|
+
version = "0.1.2"
|
|
122
|
+
source = { registry = "https://pypi.org/simple" }
|
|
123
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" }
|
|
124
|
+
wheels = [
|
|
125
|
+
{ url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" },
|
|
126
|
+
]
|
|
127
|
+
|
|
128
|
+
[[package]]
|
|
129
|
+
name = "ms-linear"
|
|
130
|
+
version = "1.0.0"
|
|
131
|
+
source = { editable = "." }
|
|
132
|
+
dependencies = [
|
|
133
|
+
{ name = "httpx" },
|
|
134
|
+
{ name = "typer" },
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[package.metadata]
|
|
138
|
+
requires-dist = [
|
|
139
|
+
{ name = "httpx", specifier = ">=0.25.0" },
|
|
140
|
+
{ name = "typer", specifier = ">=0.9.0" },
|
|
141
|
+
]
|
|
142
|
+
|
|
143
|
+
[[package]]
|
|
144
|
+
name = "pygments"
|
|
145
|
+
version = "2.19.2"
|
|
146
|
+
source = { registry = "https://pypi.org/simple" }
|
|
147
|
+
sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" }
|
|
148
|
+
wheels = [
|
|
149
|
+
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
|
|
150
|
+
]
|
|
151
|
+
|
|
152
|
+
[[package]]
|
|
153
|
+
name = "rich"
|
|
154
|
+
version = "14.3.1"
|
|
155
|
+
source = { registry = "https://pypi.org/simple" }
|
|
156
|
+
dependencies = [
|
|
157
|
+
{ name = "markdown-it-py" },
|
|
158
|
+
{ name = "pygments" },
|
|
159
|
+
]
|
|
160
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a1/84/4831f881aa6ff3c976f6d6809b58cdfa350593ffc0dc3c58f5f6586780fb/rich-14.3.1.tar.gz", hash = "sha256:b8c5f568a3a749f9290ec6bddedf835cec33696bfc1e48bcfecb276c7386e4b8", size = 230125, upload-time = "2026-01-24T21:40:44.847Z" }
|
|
161
|
+
wheels = [
|
|
162
|
+
{ url = "https://files.pythonhosted.org/packages/87/2a/a1810c8627b9ec8c57ec5ec325d306701ae7be50235e8fd81266e002a3cc/rich-14.3.1-py3-none-any.whl", hash = "sha256:da750b1aebbff0b372557426fb3f35ba56de8ef954b3190315eb64076d6fb54e", size = 309952, upload-time = "2026-01-24T21:40:42.969Z" },
|
|
163
|
+
]
|
|
164
|
+
|
|
165
|
+
[[package]]
|
|
166
|
+
name = "shellingham"
|
|
167
|
+
version = "1.5.4"
|
|
168
|
+
source = { registry = "https://pypi.org/simple" }
|
|
169
|
+
sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" }
|
|
170
|
+
wheels = [
|
|
171
|
+
{ url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" },
|
|
172
|
+
]
|
|
173
|
+
|
|
174
|
+
[[package]]
|
|
175
|
+
name = "typer"
|
|
176
|
+
version = "0.21.1"
|
|
177
|
+
source = { registry = "https://pypi.org/simple" }
|
|
178
|
+
dependencies = [
|
|
179
|
+
{ name = "click" },
|
|
180
|
+
{ name = "rich" },
|
|
181
|
+
{ name = "shellingham" },
|
|
182
|
+
{ name = "typing-extensions" },
|
|
183
|
+
]
|
|
184
|
+
sdist = { url = "https://files.pythonhosted.org/packages/36/bf/8825b5929afd84d0dabd606c67cd57b8388cb3ec385f7ef19c5cc2202069/typer-0.21.1.tar.gz", hash = "sha256:ea835607cd752343b6b2b7ce676893e5a0324082268b48f27aa058bdb7d2145d", size = 110371, upload-time = "2026-01-06T11:21:10.989Z" }
|
|
185
|
+
wheels = [
|
|
186
|
+
{ url = "https://files.pythonhosted.org/packages/a0/1d/d9257dd49ff2ca23ea5f132edf1281a0c4f9de8a762b9ae399b670a59235/typer-0.21.1-py3-none-any.whl", hash = "sha256:7985e89081c636b88d172c2ee0cfe33c253160994d47bdfdc302defd7d1f1d01", size = 47381, upload-time = "2026-01-06T11:21:09.824Z" },
|
|
187
|
+
]
|
|
188
|
+
|
|
189
|
+
[[package]]
|
|
190
|
+
name = "typing-extensions"
|
|
191
|
+
version = "4.15.0"
|
|
192
|
+
source = { registry = "https://pypi.org/simple" }
|
|
193
|
+
sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
|
|
194
|
+
wheels = [
|
|
195
|
+
{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
|
|
196
|
+
]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Wrapper script for ms-linear CLI
|
|
3
|
+
# Handles uv/pip installation transparently
|
|
4
|
+
|
|
5
|
+
# Source uv environment if available
|
|
6
|
+
if [ -f "$HOME/.local/bin/env" ]; then
|
|
7
|
+
source "$HOME/.local/bin/env"
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
11
|
+
cd "$SCRIPT_DIR/ms-linear"
|
|
12
|
+
|
|
13
|
+
if command -v uv &> /dev/null; then
|
|
14
|
+
# Prefer uv if available (faster)
|
|
15
|
+
uv sync --quiet 2>/dev/null
|
|
16
|
+
uv run python -m ms_linear "$@"
|
|
17
|
+
else
|
|
18
|
+
# Fall back to pip
|
|
19
|
+
pip install -q -e . 2>/dev/null
|
|
20
|
+
python3 -m ms_linear "$@"
|
|
21
|
+
fi
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ms:pause-work
|
|
3
|
-
description: Create context handoff when pausing work mid-phase
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- Read
|
|
6
|
-
- Write
|
|
7
|
-
- Bash
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
<objective>
|
|
11
|
-
Create `.continue-here.md` handoff file to preserve complete work state across sessions.
|
|
12
|
-
|
|
13
|
-
Enables seamless resumption in fresh session with full context restoration.
|
|
14
|
-
</objective>
|
|
15
|
-
|
|
16
|
-
<context>
|
|
17
|
-
@.planning/STATE.md
|
|
18
|
-
</context>
|
|
19
|
-
|
|
20
|
-
<process>
|
|
21
|
-
|
|
22
|
-
<step name="detect">
|
|
23
|
-
Find current phase directory from most recently modified files.
|
|
24
|
-
</step>
|
|
25
|
-
|
|
26
|
-
<step name="gather">
|
|
27
|
-
**Collect complete state for handoff:**
|
|
28
|
-
|
|
29
|
-
1. **Current position**: Which phase, which plan, which task
|
|
30
|
-
2. **Work completed**: What got done this session
|
|
31
|
-
3. **Work remaining**: What's left in current plan/phase
|
|
32
|
-
4. **Decisions made**: Key decisions and rationale
|
|
33
|
-
5. **Blockers/issues**: Anything stuck
|
|
34
|
-
6. **Mental context**: The approach, next steps, "vibe"
|
|
35
|
-
7. **Files modified**: What's changed but not committed
|
|
36
|
-
|
|
37
|
-
Ask user for clarifications if needed.
|
|
38
|
-
</step>
|
|
39
|
-
|
|
40
|
-
<step name="write">
|
|
41
|
-
**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
|
|
42
|
-
|
|
43
|
-
```markdown
|
|
44
|
-
---
|
|
45
|
-
phase: XX-name
|
|
46
|
-
task: 3
|
|
47
|
-
total_tasks: 7
|
|
48
|
-
status: in_progress
|
|
49
|
-
last_updated: [timestamp]
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
<current_state>
|
|
53
|
-
[Where exactly are we? Immediate context]
|
|
54
|
-
</current_state>
|
|
55
|
-
|
|
56
|
-
<completed_work>
|
|
57
|
-
|
|
58
|
-
- Task 1: [name] - Done
|
|
59
|
-
- Task 2: [name] - Done
|
|
60
|
-
- Task 3: [name] - In progress, [what's done]
|
|
61
|
-
</completed_work>
|
|
62
|
-
|
|
63
|
-
<remaining_work>
|
|
64
|
-
|
|
65
|
-
- Task 3: [what's left]
|
|
66
|
-
- Task 4: Not started
|
|
67
|
-
- Task 5: Not started
|
|
68
|
-
</remaining_work>
|
|
69
|
-
|
|
70
|
-
<decisions_made>
|
|
71
|
-
|
|
72
|
-
- Decided to use [X] because [reason]
|
|
73
|
-
- Chose [approach] over [alternative] because [reason]
|
|
74
|
-
</decisions_made>
|
|
75
|
-
|
|
76
|
-
<blockers>
|
|
77
|
-
- [Blocker 1]: [status/workaround]
|
|
78
|
-
</blockers>
|
|
79
|
-
|
|
80
|
-
<context>
|
|
81
|
-
[Mental state, what were you thinking, the plan]
|
|
82
|
-
</context>
|
|
83
|
-
|
|
84
|
-
<next_action>
|
|
85
|
-
Start with: [specific first action when resuming]
|
|
86
|
-
</next_action>
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Be specific enough for a fresh Claude to understand immediately.
|
|
90
|
-
</step>
|
|
91
|
-
|
|
92
|
-
<step name="commit">
|
|
93
|
-
```bash
|
|
94
|
-
git add .planning/phases/*/.continue-here.md
|
|
95
|
-
git commit -m "wip: [phase-name] paused at task [X]/[Y]"
|
|
96
|
-
```
|
|
97
|
-
</step>
|
|
98
|
-
|
|
99
|
-
<step name="confirm">
|
|
100
|
-
```
|
|
101
|
-
✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
|
|
102
|
-
|
|
103
|
-
Current state:
|
|
104
|
-
|
|
105
|
-
- Phase: [XX-name]
|
|
106
|
-
- Task: [X] of [Y]
|
|
107
|
-
- Status: [in_progress/blocked]
|
|
108
|
-
- Committed as WIP
|
|
109
|
-
|
|
110
|
-
To resume: /ms:resume-work
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
</step>
|
|
114
|
-
|
|
115
|
-
</process>
|
|
116
|
-
|
|
117
|
-
<success_criteria>
|
|
118
|
-
- [ ] .continue-here.md created in correct phase directory
|
|
119
|
-
- [ ] All sections filled with specific content
|
|
120
|
-
- [ ] Committed as WIP
|
|
121
|
-
- [ ] User knows location and how to resume
|
|
122
|
-
</success_criteria>
|
|
123
|
-
```
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ms:resume-work
|
|
3
|
-
description: Resume work from previous session with full context restoration
|
|
4
|
-
allowed-tools:
|
|
5
|
-
- Read
|
|
6
|
-
- Bash
|
|
7
|
-
- Write
|
|
8
|
-
- AskUserQuestion
|
|
9
|
-
- SlashCommand
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
<objective>
|
|
13
|
-
Restore complete project context and resume work seamlessly from previous session.
|
|
14
|
-
|
|
15
|
-
Routes to the resume-project workflow which handles:
|
|
16
|
-
|
|
17
|
-
- STATE.md loading (or reconstruction if missing)
|
|
18
|
-
- Checkpoint detection (.continue-here files)
|
|
19
|
-
- Incomplete work detection (PLAN without SUMMARY)
|
|
20
|
-
- Status presentation
|
|
21
|
-
- Context-aware next action routing
|
|
22
|
-
</objective>
|
|
23
|
-
|
|
24
|
-
<execution_context>
|
|
25
|
-
@~/.claude/mindsystem/workflows/resume-project.md
|
|
26
|
-
</execution_context>
|
|
27
|
-
|
|
28
|
-
<process>
|
|
29
|
-
**Follow the resume-project workflow** from `@~/.claude/mindsystem/workflows/resume-project.md`.
|
|
30
|
-
|
|
31
|
-
The workflow handles all resumption logic including:
|
|
32
|
-
|
|
33
|
-
1. Project existence verification
|
|
34
|
-
2. STATE.md loading or reconstruction
|
|
35
|
-
3. Checkpoint and incomplete work detection
|
|
36
|
-
4. Visual status presentation
|
|
37
|
-
5. Context-aware option offering (checks CONTEXT.md before suggesting plan vs discuss)
|
|
38
|
-
6. Routing to appropriate next command
|
|
39
|
-
7. Session continuity updates
|
|
40
|
-
</process>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# Continue-Here Template
|
|
2
|
-
|
|
3
|
-
Copy and fill this structure for `.planning/phases/XX-name/.continue-here.md`:
|
|
4
|
-
|
|
5
|
-
```yaml
|
|
6
|
-
---
|
|
7
|
-
phase: XX-name
|
|
8
|
-
task: 3
|
|
9
|
-
total_tasks: 7
|
|
10
|
-
status: in_progress
|
|
11
|
-
last_updated: 2025-01-15T14:30:00Z
|
|
12
|
-
---
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
```markdown
|
|
16
|
-
<current_state>
|
|
17
|
-
[Where exactly are we? What's the immediate context?]
|
|
18
|
-
</current_state>
|
|
19
|
-
|
|
20
|
-
<completed_work>
|
|
21
|
-
[What got done this session - be specific]
|
|
22
|
-
|
|
23
|
-
- Task 1: [name] - Done
|
|
24
|
-
- Task 2: [name] - Done
|
|
25
|
-
- Task 3: [name] - In progress, [what's done on it]
|
|
26
|
-
</completed_work>
|
|
27
|
-
|
|
28
|
-
<remaining_work>
|
|
29
|
-
[What's left in this phase]
|
|
30
|
-
|
|
31
|
-
- Task 3: [name] - [what's left to do]
|
|
32
|
-
- Task 4: [name] - Not started
|
|
33
|
-
- Task 5: [name] - Not started
|
|
34
|
-
</remaining_work>
|
|
35
|
-
|
|
36
|
-
<decisions_made>
|
|
37
|
-
[Key decisions and why - so next session doesn't re-debate]
|
|
38
|
-
|
|
39
|
-
- Decided to use [X] because [reason]
|
|
40
|
-
- Chose [approach] over [alternative] because [reason]
|
|
41
|
-
</decisions_made>
|
|
42
|
-
|
|
43
|
-
<blockers>
|
|
44
|
-
[Anything stuck or waiting on external factors]
|
|
45
|
-
|
|
46
|
-
- [Blocker 1]: [status/workaround]
|
|
47
|
-
</blockers>
|
|
48
|
-
|
|
49
|
-
<context>
|
|
50
|
-
[Mental state, "vibe", anything that helps resume smoothly]
|
|
51
|
-
|
|
52
|
-
[What were you thinking about? What was the plan?
|
|
53
|
-
This is the "pick up exactly where you left off" context.]
|
|
54
|
-
</context>
|
|
55
|
-
|
|
56
|
-
<next_action>
|
|
57
|
-
[The very first thing to do when resuming]
|
|
58
|
-
|
|
59
|
-
Start with: [specific action]
|
|
60
|
-
</next_action>
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
<yaml_fields>
|
|
64
|
-
Required YAML frontmatter:
|
|
65
|
-
|
|
66
|
-
- `phase`: Directory name (e.g., `02-authentication`)
|
|
67
|
-
- `task`: Current task number
|
|
68
|
-
- `total_tasks`: How many tasks in phase
|
|
69
|
-
- `status`: `in_progress`, `blocked`, `almost_done`
|
|
70
|
-
- `last_updated`: ISO timestamp
|
|
71
|
-
</yaml_fields>
|
|
72
|
-
|
|
73
|
-
<guidelines>
|
|
74
|
-
- Be specific enough that a fresh Claude instance understands immediately
|
|
75
|
-
- Include WHY decisions were made, not just what
|
|
76
|
-
- The `<next_action>` should be actionable without reading anything else
|
|
77
|
-
- This file gets DELETED after resume - it's not permanent storage
|
|
78
|
-
</guidelines>
|