openwish 0.3.1__tar.gz
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.
- openwish-0.3.1/.python-version +1 -0
- openwish-0.3.1/CONTRIBUTING.md +61 -0
- openwish-0.3.1/LICENSE +21 -0
- openwish-0.3.1/MANIFEST.in +5 -0
- openwish-0.3.1/PKG-INFO +260 -0
- openwish-0.3.1/README.md +238 -0
- openwish-0.3.1/docs/design.md +190 -0
- openwish-0.3.1/docs/migration.md +28 -0
- openwish-0.3.1/docs/releases.md +111 -0
- openwish-0.3.1/pyproject.toml +39 -0
- openwish-0.3.1/scripts/check_release.py +41 -0
- openwish-0.3.1/scripts/smoke_dist.py +81 -0
- openwish-0.3.1/setup.cfg +4 -0
- openwish-0.3.1/src/openwish/__init__.py +3 -0
- openwish-0.3.1/src/openwish/__main__.py +3 -0
- openwish-0.3.1/src/openwish/assets/artifacts.md +168 -0
- openwish-0.3.1/src/openwish/assets/legacy-skills.json +24 -0
- openwish-0.3.1/src/openwish/assets/policy.md +125 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-align/SKILL.md +29 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-consolidate/SKILL.md +32 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-fast-forward/SKILL.md +32 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-implement/SKILL.md +31 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-onboard/SKILL.md +29 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-plan/SKILL.md +30 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-propose/SKILL.md +36 -0
- openwish-0.3.1/src/openwish/assets/skills/ow-review/SKILL.md +35 -0
- openwish-0.3.1/src/openwish/budgets.py +86 -0
- openwish-0.3.1/src/openwish/cli.py +188 -0
- openwish-0.3.1/src/openwish/integrations.py +133 -0
- openwish-0.3.1/src/openwish/model.py +127 -0
- openwish-0.3.1/src/openwish/scaffold.py +69 -0
- openwish-0.3.1/src/openwish/storage.py +147 -0
- openwish-0.3.1/src/openwish/terminal.py +156 -0
- openwish-0.3.1/src/openwish/validation.py +162 -0
- openwish-0.3.1/src/openwish/versions.py +64 -0
- openwish-0.3.1/src/openwish/views.py +52 -0
- openwish-0.3.1/src/openwish/workflow.py +259 -0
- openwish-0.3.1/src/openwish.egg-info/PKG-INFO +260 -0
- openwish-0.3.1/src/openwish.egg-info/SOURCES.txt +50 -0
- openwish-0.3.1/src/openwish.egg-info/dependency_links.txt +1 -0
- openwish-0.3.1/src/openwish.egg-info/entry_points.txt +2 -0
- openwish-0.3.1/src/openwish.egg-info/top_level.txt +1 -0
- openwish-0.3.1/tests/__init__.py +0 -0
- openwish-0.3.1/tests/support.py +62 -0
- openwish-0.3.1/tests/test_budgets.py +53 -0
- openwish-0.3.1/tests/test_cli.py +124 -0
- openwish-0.3.1/tests/test_integrations.py +153 -0
- openwish-0.3.1/tests/test_model.py +89 -0
- openwish-0.3.1/tests/test_release.py +43 -0
- openwish-0.3.1/tests/test_storage.py +83 -0
- openwish-0.3.1/tests/test_terminal.py +135 -0
- openwish-0.3.1/tests/test_workflow.py +191 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Contributing to OpenWish
|
|
2
|
+
|
|
3
|
+
Start from the need behind an ask. Check all current needs, keep the smallest
|
|
4
|
+
coherent scope, and preserve the documented workflow and artifact budgets.
|
|
5
|
+
|
|
6
|
+
## Local development
|
|
7
|
+
|
|
8
|
+
Python 3.11+ is sufficient to run the code and tests without installation:
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
PYTHONPATH=src python3 -m openwish --help
|
|
12
|
+
PYTHONPATH=src python3 -m unittest discover -s tests -v
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
For an installed executable, use a virtual environment and `python -m pip install
|
|
16
|
+
-e .`, or `uv tool install .`. Setuptools is a build-time dependency only.
|
|
17
|
+
|
|
18
|
+
## Engineering rules
|
|
19
|
+
|
|
20
|
+
- Keep pure model/validation functions separate from filesystem operations.
|
|
21
|
+
- Prefer standard-library functionality and established packages where needed.
|
|
22
|
+
- Keep source below 500 nonblank lines when practical; 1000 is the hard maximum
|
|
23
|
+
without a justified low-complexity exception. All Markdown/OW artifacts stay
|
|
24
|
+
below 500 lines. Data-file exceptions never bypass OW knowledge limits.
|
|
25
|
+
- Test behaviors that protect intent, user data, ordering, approval freshness,
|
|
26
|
+
or review correctness. Avoid tests that merely reproduce implementation text.
|
|
27
|
+
- Run the full suite after substantive changes; it should remain well under
|
|
28
|
+
five minutes. Choose further checks based on actual unresolved risk.
|
|
29
|
+
- Keep canonical skills in `src/openwish/assets/skills/`. Test generated adapters
|
|
30
|
+
without copying divergent workflow logic into them.
|
|
31
|
+
- Store durable needs rather than asks or change containers. Put authoritative
|
|
32
|
+
need references in spec designs and retain them in human-facing summaries.
|
|
33
|
+
- Use numbered clarification questions, two or three A/B/C choices, and
|
|
34
|
+
`(Recommended)` before the preferred text. Present only the current decision.
|
|
35
|
+
- Review all observable outcomes before marking a need approved. Distinguish
|
|
36
|
+
a human decision, a fast-forward bypass, and a model's own assessment.
|
|
37
|
+
|
|
38
|
+
## Compatibility
|
|
39
|
+
|
|
40
|
+
Artifact schema version is stored in `openwish/config.json`. Reject unsupported
|
|
41
|
+
versions clearly. Preserve unknown project files. Integration updates overwrite
|
|
42
|
+
older versions, preserve same-version edits, and require confirmation to downgrade.
|
|
43
|
+
Keep package and `__version__` values in sync; bump the version when bundled skills
|
|
44
|
+
or adapters change so existing installations can receive the update. Preserve
|
|
45
|
+
known legacy template hashes when adding compatibility for unversioned releases.
|
|
46
|
+
Make schema migrations explicit before introducing incompatible formats.
|
|
47
|
+
|
|
48
|
+
Publish from the source checkout only after tests and a wheel-install smoke test
|
|
49
|
+
pass. Check package data contains policy, artifact reference, legacy template
|
|
50
|
+
hashes, and all eight skills.
|
|
51
|
+
|
|
52
|
+
## Releases
|
|
53
|
+
|
|
54
|
+
The canonical PyPI distribution is `openwish`; its executable is `ow`. The Check
|
|
55
|
+
workflow tests the supported Python matrix, checks version agreement, builds a
|
|
56
|
+
wheel and source distribution, validates metadata, and installs both with uv.
|
|
57
|
+
The Release workflow reuses those checks and publishes the exact tested artifacts.
|
|
58
|
+
|
|
59
|
+
Published stable GitHub releases go to PyPI; a manual Release workflow run goes
|
|
60
|
+
to TestPyPI. See [release setup and procedure](docs/releases.md) for the one-time
|
|
61
|
+
Trusted Publisher configuration and the steps for each release.
|
openwish-0.3.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Scott Yang
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
openwish-0.3.1/PKG-INFO
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openwish
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Need-Driven Development for humans and coding agents
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://github.com/yisyang/open-wish
|
|
7
|
+
Project-URL: Documentation, https://github.com/yisyang/open-wish/blob/main/README.md
|
|
8
|
+
Project-URL: Repository, https://github.com/yisyang/open-wish
|
|
9
|
+
Project-URL: Issues, https://github.com/yisyang/open-wish/issues
|
|
10
|
+
Project-URL: Releases, https://github.com/yisyang/open-wish/releases
|
|
11
|
+
Keywords: need-driven-development,coding-agents,agent-skills,cli
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Topic :: Software Development
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Dynamic: license-file
|
|
22
|
+
|
|
23
|
+
# OpenWish (OW)
|
|
24
|
+
|
|
25
|
+
**Need-Driven Development for humans and coding agents.**
|
|
26
|
+
|
|
27
|
+
Humans ask. AI identifies needs, aligns solutions, plans, implements, and reviews.
|
|
28
|
+
Humans review the results. Current needs remain binding after implementation,
|
|
29
|
+
so the next feature does not quietly undo what the previous one accomplished.
|
|
30
|
+
**OW operates on needs.** Asks stay in conversation; existing needs are revised
|
|
31
|
+
or reopened, and distinct outcomes become new needs. There are no change records.
|
|
32
|
+
|
|
33
|
+
OpenWish takes inspiration from [Spec Kit](https://github.com/github/spec-kit)
|
|
34
|
+
and [OpenSpec](https://github.com/Fission-AI/OpenSpec), with durable needs and
|
|
35
|
+
bounded agent context at the center of the workflow.
|
|
36
|
+
|
|
37
|
+
## Get started
|
|
38
|
+
|
|
39
|
+
Requires Python 3.11+. The runtime has **no third-party dependencies**.
|
|
40
|
+
After the first PyPI release, install the CLI with [uv](https://docs.astral.sh/uv/):
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
uv tool install openwish
|
|
44
|
+
cd /path/to/your/product
|
|
45
|
+
ow init
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Until that first publication, install from a checkout using `uv tool install .`.
|
|
49
|
+
The package name is **openwish** and the installed command is **ow**. If your
|
|
50
|
+
shell cannot find `ow`, run `uv tool update-shell` and open a new terminal.
|
|
51
|
+
|
|
52
|
+
`ow init` opens a terminal multi-select for **OpenCode, Claude Code, Codex, and
|
|
53
|
+
generic Agent Skills**. Move with the arrow keys, toggle with Space, and press
|
|
54
|
+
Enter to initialize all selected harnesses. Press A to toggle all or Q/Esc to
|
|
55
|
+
cancel. Installed harnesses are preselected on subsequent runs. Basic or narrow
|
|
56
|
+
terminals use a numbered multi-select instead.
|
|
57
|
+
|
|
58
|
+
To select harnesses directly, including in scripts:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
ow init --harness opencode claude codex
|
|
62
|
+
# Equivalent: ow init --harness opencode --harness claude --harness codex
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Without an interactive terminal, specify `--harness`. Codex and generic Agent
|
|
66
|
+
Skills share `.agents/skills`, so selecting both installs one copy. One
|
|
67
|
+
product/domain in one repository, including a monorepo, is the default.
|
|
68
|
+
|
|
69
|
+
### Updating installed skills
|
|
70
|
+
|
|
71
|
+
Upgrade the CLI, then run `ow init` again in your project:
|
|
72
|
+
|
|
73
|
+
```sh
|
|
74
|
+
uv tool upgrade openwish
|
|
75
|
+
ow init
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Initialization installs missing integrations and compares each selected file's
|
|
79
|
+
installed version with the CLI's bundled version:
|
|
80
|
+
|
|
81
|
+
| Installed version | Behavior |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| Older | Overwrite with the bundled version, including any local edits |
|
|
84
|
+
| Same | Leave the file untouched, including local edits and timestamps |
|
|
85
|
+
| Newer | Ask before downgrading; keeping the newer files is the default |
|
|
86
|
+
|
|
87
|
+
Downgrades require explicit terminal confirmation; scripts fail before writing
|
|
88
|
+
if confirmation is needed. Declining keeps newer files while other selected
|
|
89
|
+
installs/upgrades proceed. Deselection does not uninstall existing integrations.
|
|
90
|
+
|
|
91
|
+
Version stamps and `openwish/installation.json` track installed skills and command
|
|
92
|
+
adapters. Exact unversioned v0.2 templates are recognized and upgraded; unknown
|
|
93
|
+
unversioned files are preserved with an actionable error. Existing needs, specs,
|
|
94
|
+
project configuration, policy, and knowledge are preserved when reinitializing.
|
|
95
|
+
|
|
96
|
+
In **OpenCode**, start with:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
/onboard
|
|
100
|
+
/ow-propose Let operations reconcile this month's transactions without copying rows.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Or explicitly choose the uninterrupted workflow:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
/fast-forward Let operations reconcile this month's transactions without copying rows.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`/fast-forward` skips **all OW confirmations and approvals**, including final
|
|
110
|
+
acceptance, for the selected needs' current implementation revisions. It still performs alignment, planning, implementation,
|
|
111
|
+
verification, and AI review. It asks only for genuinely blocking clarification,
|
|
112
|
+
access, or manual observations, after continuing any independent ready work.
|
|
113
|
+
|
|
114
|
+
## The workflow
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
Ask → Propose → Align → Plan → Implement ↔ Review → Accepted results
|
|
118
|
+
│ │ │ │
|
|
119
|
+
confirm approve authorize explicit acceptance
|
|
120
|
+
needs design implementation in default mode
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Propose automatically enters Align after need confirmation. Align enters Plan
|
|
124
|
+
after design approval. Plan asks whether to implement. Implementation continues
|
|
125
|
+
through ready work and AI review/remediation; it does not stop for approval of
|
|
126
|
+
each task or epic. Human acceptance is requested once available work is finished.
|
|
127
|
+
|
|
128
|
+
| Skill | Responsibility |
|
|
129
|
+
| --- | --- |
|
|
130
|
+
| `ow-propose` | Distill an ask into new or revised needs; clarify material intent |
|
|
131
|
+
| `ow-align` | Reconcile all current needs and affected implementations; update specs/designs |
|
|
132
|
+
| `ow-plan` | Inspect code and plan minimal epics and correctly ordered task groups |
|
|
133
|
+
| `ow-implement` | Execute ready work until completion or an actual human blocker |
|
|
134
|
+
| `ow-review` | Check needs and regressions, remediate, and present compact results |
|
|
135
|
+
| `ow-consolidate` | Promote durable knowledge and remove completed execution detail |
|
|
136
|
+
| `ow-fast-forward` | Run the full workflow without confirmation/approval prompts |
|
|
137
|
+
| `ow-onboard` | Infer candidate needs and map an existing codebase for confirmation |
|
|
138
|
+
|
|
139
|
+
### Harness invocation
|
|
140
|
+
|
|
141
|
+
| Harness | Initialization | Invocation |
|
|
142
|
+
| --- | --- | --- |
|
|
143
|
+
| OpenCode V2 | `ow init --harness opencode` | `/ow-propose`, `/fast-forward`, `/onboard` |
|
|
144
|
+
| Claude Code | `ow init --harness claude` | `/ow-propose`, `/fast-forward`, `/onboard` |
|
|
145
|
+
| Codex | `ow init --harness codex` | `$ow-propose`, `$ow-fast-forward`, `$ow-onboard` |
|
|
146
|
+
| Other Agent Skills hosts | `ow init --harness generic` | Host-specific skill selection |
|
|
147
|
+
|
|
148
|
+
Add or update integrations later with `ow init`, or `ow skills --harness NAME ...`.
|
|
149
|
+
Both commands use the same version-aware installer. The same workflow is used
|
|
150
|
+
everywhere; command adapters do not contain divergent process logic.
|
|
151
|
+
|
|
152
|
+
## Needs are first-class
|
|
153
|
+
|
|
154
|
+
Each need records its actor, desired outcome, observable
|
|
155
|
+
acceptance, human confirmation date, and latest verified implementation date.
|
|
156
|
+
|
|
157
|
+
Two independent state dimensions avoid confusing delivery with relevance:
|
|
158
|
+
|
|
159
|
+
- **Currency:** `current`, `retired`.
|
|
160
|
+
- **Implementation:** `open`, `in-progress`, `review`, `approved`.
|
|
161
|
+
|
|
162
|
+
A `current/approved` need still constrains every future design. Fast-forward
|
|
163
|
+
acceptance records its origin; it is not mislabeled as human confirmation.
|
|
164
|
+
An inferred need starts unconfirmed, and existing code is not assumed verified.
|
|
165
|
+
|
|
166
|
+
Spec designs contain authoritative many-to-many references to needs. Specs describe
|
|
167
|
+
entities, UI modules, or cross-cutting capabilities; epics/tasks organize bounded
|
|
168
|
+
implementation. Containment and prerequisite relationships are distinct.
|
|
169
|
+
|
|
170
|
+
`ow reopen N-001` resumes work under the same ID and resets authority to default.
|
|
171
|
+
Only an explicit new fast-forward request enables it for the reopened revision.
|
|
172
|
+
|
|
173
|
+
### Human-facing communication
|
|
174
|
+
|
|
175
|
+
Propose confirms only the need interpretation. Later approvals are discussed when
|
|
176
|
+
their stage is reached. Clarifications use numbered questions and two or three
|
|
177
|
+
lettered choices, with `(Recommended)` before the preferred choice text:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
1. N-001 already provides local monthly trends. Uploading raw records would
|
|
181
|
+
conflict with its local-only constraint. What should I do?
|
|
182
|
+
A. (Recommended) Keep N-001 as-is. No new need or product modification.
|
|
183
|
+
B. Add third-party upload and keep trends local. Revise N-001's allowed-domain exception.
|
|
184
|
+
C. Add third-party upload and computation with local viewing. Revise N-001's constraint.
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Final updates lead with need → spec → outcome, followed by verification and any
|
|
188
|
+
blocker. `ow summary N-001` provides that context; reporting only task IDs is insufficient.
|
|
189
|
+
|
|
190
|
+
## Small artifacts, complete intent
|
|
191
|
+
|
|
192
|
+
- OW-managed knowledge and planning: **under 500 lines per artifact**.
|
|
193
|
+
- All current needs together: **under 500 lines**, default **6,000 estimated tokens**.
|
|
194
|
+
- Source: **under 500 LOC soft target**, **under 1000 LOC hard maximum**.
|
|
195
|
+
- Data formats are exempt from source limits. Low-complexity source exceptions
|
|
196
|
+
are exact paths with a rationale; they do not exempt OW knowledge artifacts.
|
|
197
|
+
- Routine verification should finish within **five minutes**. Necessary slower
|
|
198
|
+
checks are explicit, and missing verification never counts as success.
|
|
199
|
+
- Latest summaries replace earlier ones. Git holds history; there is no required
|
|
200
|
+
append-only journal, growing evidence archive, or duplicate needs ledger.
|
|
201
|
+
|
|
202
|
+
`ow context` derives the needs register and related spec statuses from authoritative
|
|
203
|
+
records. `ow context N-001` also lists affected contracts and work to retrieve.
|
|
204
|
+
Agents read detailed designs only for the work at hand.
|
|
205
|
+
|
|
206
|
+
## CLI
|
|
207
|
+
|
|
208
|
+
The CLI handles deterministic operations. The coding harness supplies reasoning,
|
|
209
|
+
code execution, and semantic review; OW does not make model-provider API calls.
|
|
210
|
+
|
|
211
|
+
```sh
|
|
212
|
+
ow status # needs, linked specs, implementation progress
|
|
213
|
+
ow context # all current needs, including approved ones
|
|
214
|
+
ow context N-001 N-002 # plus affected spec/epic IDs
|
|
215
|
+
ow check # schema, links, cycles, ordering, size budgets
|
|
216
|
+
ow ready N-001 N-002 # ready work with spec/need context and blockers
|
|
217
|
+
ow summary N-001 # outcomes, specs, work, and verification
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Artifact scaffolding and decision recording are available to agents and humans:
|
|
221
|
+
|
|
222
|
+
```sh
|
|
223
|
+
ow new need N-001 --title "Monthly reconciliation"
|
|
224
|
+
ow new spec S-001 --title "Transaction export"
|
|
225
|
+
ow new epic E-001 --title "Export implementation"
|
|
226
|
+
# Fill templates and references before checks or gates.
|
|
227
|
+
ow gate needs N-001 --by human
|
|
228
|
+
ow reopen N-001 # reuse a need when further work is necessary
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Gates are revision-bound: changed need intent invalidates downstream authority,
|
|
232
|
+
while updating task progress does not. Reviews are bound to the plan and repository
|
|
233
|
+
content. The CLI records human decisions supplied by the harness; it does not
|
|
234
|
+
authenticate a conversation or establish semantic correctness on its own.
|
|
235
|
+
|
|
236
|
+
`--root PATH` works before the subcommand; otherwise the project root is discovered
|
|
237
|
+
from the current directory and its parents. `check`, `status`, and `ready` support
|
|
238
|
+
`--json`. See `ow --help` and the installed `openwish/artifacts.md` for all commands.
|
|
239
|
+
|
|
240
|
+
## Design and contribution
|
|
241
|
+
|
|
242
|
+
- [Framework design](docs/design.md)
|
|
243
|
+
- [OpenWish's own current needs](openwish/needs/)
|
|
244
|
+
- [Artifact format](src/openwish/assets/artifacts.md)
|
|
245
|
+
- [Workflow policy](src/openwish/assets/policy.md)
|
|
246
|
+
- [Contributing and verification](CONTRIBUTING.md)
|
|
247
|
+
- [Publishing releases to PyPI](docs/releases.md)
|
|
248
|
+
|
|
249
|
+
Run directly from a source checkout without installing:
|
|
250
|
+
|
|
251
|
+
```sh
|
|
252
|
+
PYTHONPATH=src python3 -m openwish --help
|
|
253
|
+
PYTHONPATH=src python3 -m unittest discover -s tests -v
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
OpenWish is an initial `0.3.1` implementation using artifact schema 2. The v0.1
|
|
257
|
+
prototype's change records are superseded; see [migration guidance](docs/migration.md).
|
|
258
|
+
Integration files follow current
|
|
259
|
+
host documentation; deterministic checks do not substitute for hands-on harness
|
|
260
|
+
workflow validation. Licensed under [MIT](LICENSE).
|
openwish-0.3.1/README.md
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# OpenWish (OW)
|
|
2
|
+
|
|
3
|
+
**Need-Driven Development for humans and coding agents.**
|
|
4
|
+
|
|
5
|
+
Humans ask. AI identifies needs, aligns solutions, plans, implements, and reviews.
|
|
6
|
+
Humans review the results. Current needs remain binding after implementation,
|
|
7
|
+
so the next feature does not quietly undo what the previous one accomplished.
|
|
8
|
+
**OW operates on needs.** Asks stay in conversation; existing needs are revised
|
|
9
|
+
or reopened, and distinct outcomes become new needs. There are no change records.
|
|
10
|
+
|
|
11
|
+
OpenWish takes inspiration from [Spec Kit](https://github.com/github/spec-kit)
|
|
12
|
+
and [OpenSpec](https://github.com/Fission-AI/OpenSpec), with durable needs and
|
|
13
|
+
bounded agent context at the center of the workflow.
|
|
14
|
+
|
|
15
|
+
## Get started
|
|
16
|
+
|
|
17
|
+
Requires Python 3.11+. The runtime has **no third-party dependencies**.
|
|
18
|
+
After the first PyPI release, install the CLI with [uv](https://docs.astral.sh/uv/):
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
uv tool install openwish
|
|
22
|
+
cd /path/to/your/product
|
|
23
|
+
ow init
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Until that first publication, install from a checkout using `uv tool install .`.
|
|
27
|
+
The package name is **openwish** and the installed command is **ow**. If your
|
|
28
|
+
shell cannot find `ow`, run `uv tool update-shell` and open a new terminal.
|
|
29
|
+
|
|
30
|
+
`ow init` opens a terminal multi-select for **OpenCode, Claude Code, Codex, and
|
|
31
|
+
generic Agent Skills**. Move with the arrow keys, toggle with Space, and press
|
|
32
|
+
Enter to initialize all selected harnesses. Press A to toggle all or Q/Esc to
|
|
33
|
+
cancel. Installed harnesses are preselected on subsequent runs. Basic or narrow
|
|
34
|
+
terminals use a numbered multi-select instead.
|
|
35
|
+
|
|
36
|
+
To select harnesses directly, including in scripts:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
ow init --harness opencode claude codex
|
|
40
|
+
# Equivalent: ow init --harness opencode --harness claude --harness codex
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Without an interactive terminal, specify `--harness`. Codex and generic Agent
|
|
44
|
+
Skills share `.agents/skills`, so selecting both installs one copy. One
|
|
45
|
+
product/domain in one repository, including a monorepo, is the default.
|
|
46
|
+
|
|
47
|
+
### Updating installed skills
|
|
48
|
+
|
|
49
|
+
Upgrade the CLI, then run `ow init` again in your project:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
uv tool upgrade openwish
|
|
53
|
+
ow init
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Initialization installs missing integrations and compares each selected file's
|
|
57
|
+
installed version with the CLI's bundled version:
|
|
58
|
+
|
|
59
|
+
| Installed version | Behavior |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| Older | Overwrite with the bundled version, including any local edits |
|
|
62
|
+
| Same | Leave the file untouched, including local edits and timestamps |
|
|
63
|
+
| Newer | Ask before downgrading; keeping the newer files is the default |
|
|
64
|
+
|
|
65
|
+
Downgrades require explicit terminal confirmation; scripts fail before writing
|
|
66
|
+
if confirmation is needed. Declining keeps newer files while other selected
|
|
67
|
+
installs/upgrades proceed. Deselection does not uninstall existing integrations.
|
|
68
|
+
|
|
69
|
+
Version stamps and `openwish/installation.json` track installed skills and command
|
|
70
|
+
adapters. Exact unversioned v0.2 templates are recognized and upgraded; unknown
|
|
71
|
+
unversioned files are preserved with an actionable error. Existing needs, specs,
|
|
72
|
+
project configuration, policy, and knowledge are preserved when reinitializing.
|
|
73
|
+
|
|
74
|
+
In **OpenCode**, start with:
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
/onboard
|
|
78
|
+
/ow-propose Let operations reconcile this month's transactions without copying rows.
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Or explicitly choose the uninterrupted workflow:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
/fast-forward Let operations reconcile this month's transactions without copying rows.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`/fast-forward` skips **all OW confirmations and approvals**, including final
|
|
88
|
+
acceptance, for the selected needs' current implementation revisions. It still performs alignment, planning, implementation,
|
|
89
|
+
verification, and AI review. It asks only for genuinely blocking clarification,
|
|
90
|
+
access, or manual observations, after continuing any independent ready work.
|
|
91
|
+
|
|
92
|
+
## The workflow
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
Ask → Propose → Align → Plan → Implement ↔ Review → Accepted results
|
|
96
|
+
│ │ │ │
|
|
97
|
+
confirm approve authorize explicit acceptance
|
|
98
|
+
needs design implementation in default mode
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Propose automatically enters Align after need confirmation. Align enters Plan
|
|
102
|
+
after design approval. Plan asks whether to implement. Implementation continues
|
|
103
|
+
through ready work and AI review/remediation; it does not stop for approval of
|
|
104
|
+
each task or epic. Human acceptance is requested once available work is finished.
|
|
105
|
+
|
|
106
|
+
| Skill | Responsibility |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| `ow-propose` | Distill an ask into new or revised needs; clarify material intent |
|
|
109
|
+
| `ow-align` | Reconcile all current needs and affected implementations; update specs/designs |
|
|
110
|
+
| `ow-plan` | Inspect code and plan minimal epics and correctly ordered task groups |
|
|
111
|
+
| `ow-implement` | Execute ready work until completion or an actual human blocker |
|
|
112
|
+
| `ow-review` | Check needs and regressions, remediate, and present compact results |
|
|
113
|
+
| `ow-consolidate` | Promote durable knowledge and remove completed execution detail |
|
|
114
|
+
| `ow-fast-forward` | Run the full workflow without confirmation/approval prompts |
|
|
115
|
+
| `ow-onboard` | Infer candidate needs and map an existing codebase for confirmation |
|
|
116
|
+
|
|
117
|
+
### Harness invocation
|
|
118
|
+
|
|
119
|
+
| Harness | Initialization | Invocation |
|
|
120
|
+
| --- | --- | --- |
|
|
121
|
+
| OpenCode V2 | `ow init --harness opencode` | `/ow-propose`, `/fast-forward`, `/onboard` |
|
|
122
|
+
| Claude Code | `ow init --harness claude` | `/ow-propose`, `/fast-forward`, `/onboard` |
|
|
123
|
+
| Codex | `ow init --harness codex` | `$ow-propose`, `$ow-fast-forward`, `$ow-onboard` |
|
|
124
|
+
| Other Agent Skills hosts | `ow init --harness generic` | Host-specific skill selection |
|
|
125
|
+
|
|
126
|
+
Add or update integrations later with `ow init`, or `ow skills --harness NAME ...`.
|
|
127
|
+
Both commands use the same version-aware installer. The same workflow is used
|
|
128
|
+
everywhere; command adapters do not contain divergent process logic.
|
|
129
|
+
|
|
130
|
+
## Needs are first-class
|
|
131
|
+
|
|
132
|
+
Each need records its actor, desired outcome, observable
|
|
133
|
+
acceptance, human confirmation date, and latest verified implementation date.
|
|
134
|
+
|
|
135
|
+
Two independent state dimensions avoid confusing delivery with relevance:
|
|
136
|
+
|
|
137
|
+
- **Currency:** `current`, `retired`.
|
|
138
|
+
- **Implementation:** `open`, `in-progress`, `review`, `approved`.
|
|
139
|
+
|
|
140
|
+
A `current/approved` need still constrains every future design. Fast-forward
|
|
141
|
+
acceptance records its origin; it is not mislabeled as human confirmation.
|
|
142
|
+
An inferred need starts unconfirmed, and existing code is not assumed verified.
|
|
143
|
+
|
|
144
|
+
Spec designs contain authoritative many-to-many references to needs. Specs describe
|
|
145
|
+
entities, UI modules, or cross-cutting capabilities; epics/tasks organize bounded
|
|
146
|
+
implementation. Containment and prerequisite relationships are distinct.
|
|
147
|
+
|
|
148
|
+
`ow reopen N-001` resumes work under the same ID and resets authority to default.
|
|
149
|
+
Only an explicit new fast-forward request enables it for the reopened revision.
|
|
150
|
+
|
|
151
|
+
### Human-facing communication
|
|
152
|
+
|
|
153
|
+
Propose confirms only the need interpretation. Later approvals are discussed when
|
|
154
|
+
their stage is reached. Clarifications use numbered questions and two or three
|
|
155
|
+
lettered choices, with `(Recommended)` before the preferred choice text:
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
1. N-001 already provides local monthly trends. Uploading raw records would
|
|
159
|
+
conflict with its local-only constraint. What should I do?
|
|
160
|
+
A. (Recommended) Keep N-001 as-is. No new need or product modification.
|
|
161
|
+
B. Add third-party upload and keep trends local. Revise N-001's allowed-domain exception.
|
|
162
|
+
C. Add third-party upload and computation with local viewing. Revise N-001's constraint.
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Final updates lead with need → spec → outcome, followed by verification and any
|
|
166
|
+
blocker. `ow summary N-001` provides that context; reporting only task IDs is insufficient.
|
|
167
|
+
|
|
168
|
+
## Small artifacts, complete intent
|
|
169
|
+
|
|
170
|
+
- OW-managed knowledge and planning: **under 500 lines per artifact**.
|
|
171
|
+
- All current needs together: **under 500 lines**, default **6,000 estimated tokens**.
|
|
172
|
+
- Source: **under 500 LOC soft target**, **under 1000 LOC hard maximum**.
|
|
173
|
+
- Data formats are exempt from source limits. Low-complexity source exceptions
|
|
174
|
+
are exact paths with a rationale; they do not exempt OW knowledge artifacts.
|
|
175
|
+
- Routine verification should finish within **five minutes**. Necessary slower
|
|
176
|
+
checks are explicit, and missing verification never counts as success.
|
|
177
|
+
- Latest summaries replace earlier ones. Git holds history; there is no required
|
|
178
|
+
append-only journal, growing evidence archive, or duplicate needs ledger.
|
|
179
|
+
|
|
180
|
+
`ow context` derives the needs register and related spec statuses from authoritative
|
|
181
|
+
records. `ow context N-001` also lists affected contracts and work to retrieve.
|
|
182
|
+
Agents read detailed designs only for the work at hand.
|
|
183
|
+
|
|
184
|
+
## CLI
|
|
185
|
+
|
|
186
|
+
The CLI handles deterministic operations. The coding harness supplies reasoning,
|
|
187
|
+
code execution, and semantic review; OW does not make model-provider API calls.
|
|
188
|
+
|
|
189
|
+
```sh
|
|
190
|
+
ow status # needs, linked specs, implementation progress
|
|
191
|
+
ow context # all current needs, including approved ones
|
|
192
|
+
ow context N-001 N-002 # plus affected spec/epic IDs
|
|
193
|
+
ow check # schema, links, cycles, ordering, size budgets
|
|
194
|
+
ow ready N-001 N-002 # ready work with spec/need context and blockers
|
|
195
|
+
ow summary N-001 # outcomes, specs, work, and verification
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Artifact scaffolding and decision recording are available to agents and humans:
|
|
199
|
+
|
|
200
|
+
```sh
|
|
201
|
+
ow new need N-001 --title "Monthly reconciliation"
|
|
202
|
+
ow new spec S-001 --title "Transaction export"
|
|
203
|
+
ow new epic E-001 --title "Export implementation"
|
|
204
|
+
# Fill templates and references before checks or gates.
|
|
205
|
+
ow gate needs N-001 --by human
|
|
206
|
+
ow reopen N-001 # reuse a need when further work is necessary
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Gates are revision-bound: changed need intent invalidates downstream authority,
|
|
210
|
+
while updating task progress does not. Reviews are bound to the plan and repository
|
|
211
|
+
content. The CLI records human decisions supplied by the harness; it does not
|
|
212
|
+
authenticate a conversation or establish semantic correctness on its own.
|
|
213
|
+
|
|
214
|
+
`--root PATH` works before the subcommand; otherwise the project root is discovered
|
|
215
|
+
from the current directory and its parents. `check`, `status`, and `ready` support
|
|
216
|
+
`--json`. See `ow --help` and the installed `openwish/artifacts.md` for all commands.
|
|
217
|
+
|
|
218
|
+
## Design and contribution
|
|
219
|
+
|
|
220
|
+
- [Framework design](docs/design.md)
|
|
221
|
+
- [OpenWish's own current needs](openwish/needs/)
|
|
222
|
+
- [Artifact format](src/openwish/assets/artifacts.md)
|
|
223
|
+
- [Workflow policy](src/openwish/assets/policy.md)
|
|
224
|
+
- [Contributing and verification](CONTRIBUTING.md)
|
|
225
|
+
- [Publishing releases to PyPI](docs/releases.md)
|
|
226
|
+
|
|
227
|
+
Run directly from a source checkout without installing:
|
|
228
|
+
|
|
229
|
+
```sh
|
|
230
|
+
PYTHONPATH=src python3 -m openwish --help
|
|
231
|
+
PYTHONPATH=src python3 -m unittest discover -s tests -v
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
OpenWish is an initial `0.3.1` implementation using artifact schema 2. The v0.1
|
|
235
|
+
prototype's change records are superseded; see [migration guidance](docs/migration.md).
|
|
236
|
+
Integration files follow current
|
|
237
|
+
host documentation; deterministic checks do not substitute for hands-on harness
|
|
238
|
+
workflow validation. Licensed under [MIT](LICENSE).
|