specflo 0.2.0__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.
- specflo-0.2.0/.gitignore +19 -0
- specflo-0.2.0/CHANGELOG.md +74 -0
- specflo-0.2.0/LICENSE +625 -0
- specflo-0.2.0/PKG-INFO +173 -0
- specflo-0.2.0/README.md +161 -0
- specflo-0.2.0/hatch_build.py +57 -0
- specflo-0.2.0/pyproject.toml +50 -0
- specflo-0.2.0/skills/brainstorm/SKILL.md +150 -0
- specflo-0.2.0/skills/execute/SKILL.md +131 -0
- specflo-0.2.0/skills/plan/SKILL.md +112 -0
- specflo-0.2.0/skills/research/SKILL.md +99 -0
- specflo-0.2.0/skills/shelve/SKILL.md +70 -0
- specflo-0.2.0/skills/spec/SKILL.md +124 -0
- specflo-0.2.0/src/specflo/__init__.py +3 -0
- specflo-0.2.0/src/specflo/brainstorm.py +179 -0
- specflo-0.2.0/src/specflo/checkpoint.py +183 -0
- specflo-0.2.0/src/specflo/cli.py +1310 -0
- specflo-0.2.0/src/specflo/config.py +86 -0
- specflo-0.2.0/src/specflo/errors.py +9 -0
- specflo-0.2.0/src/specflo/guide.py +142 -0
- specflo-0.2.0/src/specflo/hook.py +246 -0
- specflo-0.2.0/src/specflo/markdown.py +203 -0
- specflo-0.2.0/src/specflo/plan.py +1108 -0
- specflo-0.2.0/src/specflo/projects.py +218 -0
- specflo-0.2.0/src/specflo/skills/.gitkeep +13 -0
- specflo-0.2.0/src/specflo/spec.py +281 -0
- specflo-0.2.0/src/specflo/status.py +121 -0
- specflo-0.2.0/src/specflo/validators.py +25 -0
- specflo-0.2.0/src/specflo/workflow.py +118 -0
- specflo-0.2.0/tests/conftest.py +21 -0
- specflo-0.2.0/tests/fixtures/research-digest.md +28 -0
- specflo-0.2.0/tests/test_brainstorm.py +298 -0
- specflo-0.2.0/tests/test_checkpoint.py +371 -0
- specflo-0.2.0/tests/test_cli.py +2081 -0
- specflo-0.2.0/tests/test_config.py +90 -0
- specflo-0.2.0/tests/test_docs_ascii.py +28 -0
- specflo-0.2.0/tests/test_entrypoint.py +26 -0
- specflo-0.2.0/tests/test_execute_skill.py +32 -0
- specflo-0.2.0/tests/test_guide.py +135 -0
- specflo-0.2.0/tests/test_hook.py +333 -0
- specflo-0.2.0/tests/test_markdown.py +92 -0
- specflo-0.2.0/tests/test_packaging.py +209 -0
- specflo-0.2.0/tests/test_plan.py +1145 -0
- specflo-0.2.0/tests/test_plan_skill.py +32 -0
- specflo-0.2.0/tests/test_projects.py +270 -0
- specflo-0.2.0/tests/test_research_skill.py +56 -0
- specflo-0.2.0/tests/test_shelve_skill.py +34 -0
- specflo-0.2.0/tests/test_skill.py +55 -0
- specflo-0.2.0/tests/test_skill_roots.py +40 -0
- specflo-0.2.0/tests/test_skills_lifecycle.py +97 -0
- specflo-0.2.0/tests/test_spec.py +301 -0
- specflo-0.2.0/tests/test_spec_skill.py +30 -0
- specflo-0.2.0/tests/test_stale_notice.py +137 -0
- specflo-0.2.0/tests/test_status.py +161 -0
- specflo-0.2.0/tests/test_validators.py +60 -0
- specflo-0.2.0/tests/test_workflow.py +144 -0
- specflo-0.2.0/uv.lock +263 -0
specflo-0.2.0/.gitignore
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Python bytecode
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# Virtual environment
|
|
6
|
+
.venv/
|
|
7
|
+
|
|
8
|
+
# Test / build artifacts
|
|
9
|
+
.pytest_cache/
|
|
10
|
+
*.egg-info/
|
|
11
|
+
build/
|
|
12
|
+
dist/
|
|
13
|
+
|
|
14
|
+
# Editor / backup cruft
|
|
15
|
+
*.OLD
|
|
16
|
+
|
|
17
|
+
# Local feedback / scratch notes — never commit (they'd leak: top-level, not
|
|
18
|
+
# under an EXCLUDE_PATHS dir, so publish-to-github.sh would NOT strip them).
|
|
19
|
+
specflo-feedback*
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to specflo are documented here. The format is based on
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project follows
|
|
5
|
+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
The version is kept in sync across `version` in `pyproject.toml` and
|
|
8
|
+
`__version__` in `src/specflo/__init__.py`; `specflo --version` derives from the
|
|
9
|
+
latter. Release tags are of the form `vX.Y.Z`.
|
|
10
|
+
|
|
11
|
+
## [0.2.0]
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- **`specflo skills` command group.** specflo now carries its 6 workflow skills
|
|
15
|
+
(brainstorm, execute, plan, research, shelve, spec) as bundled package data and
|
|
16
|
+
installs them into whatever agent harness is present (Claude Code, pi, Hermes,
|
|
17
|
+
opencode): `specflo skills install` / `status` / `update` / `uninstall`. Each
|
|
18
|
+
install is a plain copy carrying a specflo provenance stamp, honors
|
|
19
|
+
`--scope user|project` (default user) and `--harness`, and never clobbers a
|
|
20
|
+
locally-modified skill without `--force`. Powered by agentsquire, now a runtime
|
|
21
|
+
dependency (`agentsquire>=0.5.0`).
|
|
22
|
+
- **Startup stale-skills notice.** When installed skills have an update
|
|
23
|
+
available, any specflo command prints a single advisory line on stderr pointing
|
|
24
|
+
at `specflo skills update`. It is notice-only: it never prompts, never updates
|
|
25
|
+
anything, never writes stdout, and never changes the exit code, and it stays
|
|
26
|
+
silent for a symlinked live-edit dev install. Suppress it with `CI` or
|
|
27
|
+
`AGENTSQUIRE_NO_UPDATE_CHECK` set to any non-empty value.
|
|
28
|
+
- **`specflo --version`.** A top-level `--version` option prints the released
|
|
29
|
+
version (`specflo <X.Y.Z>`) and exits 0.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- **`click` is now a declared dependency** (`click>=8.1`). The CLI imports it
|
|
33
|
+
directly to catch click's control-flow exceptions; previously it relied on
|
|
34
|
+
typer and agentsquire to pull it in transitively. No behaviour change - the
|
|
35
|
+
same click was already being installed.
|
|
36
|
+
|
|
37
|
+
## [0.1.1]
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
- **Paste-ready memory snippet in `specflo guide`.** The guide output (and its
|
|
41
|
+
`--json` payload) now leads with a thin, version-less block you paste once into
|
|
42
|
+
an agent memory file (CLAUDE.md / AGENTS.md) so a cold agent discovers specflo
|
|
43
|
+
without being told. It points at `specflo guide` / `specflo status` rather than
|
|
44
|
+
embedding the command surface, so it never goes stale and never needs
|
|
45
|
+
re-committing on upgrade.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- **README rewrite.** Stronger intro pitch (why on-disk structure matters, the
|
|
49
|
+
local-model angle, multi-project/switching) plus a "point your agent at this
|
|
50
|
+
repo and ask it to install" path. README and CHANGELOG are now pure ASCII,
|
|
51
|
+
enforced by `tests/test_docs_ascii.py`.
|
|
52
|
+
|
|
53
|
+
## [0.1.0]
|
|
54
|
+
|
|
55
|
+
Initial public release.
|
|
56
|
+
|
|
57
|
+
### Added
|
|
58
|
+
- **Spec-driven pipeline CLI.** `specflo` drives a linear
|
|
59
|
+
**brainstorm -> spec -> plan -> execute** loop over markdown artifacts on disk,
|
|
60
|
+
with active-project tracking and switch-anytime support (monorepo-friendly).
|
|
61
|
+
- **Orientation & scaffolding.** `specflo guide` (runs cold, before `init`),
|
|
62
|
+
`specflo init`, `new`, `list`, `switch`, `status`.
|
|
63
|
+
- **Artifact commands.** `brainstorm start` + `decision add`; `spec start` +
|
|
64
|
+
`requirement add`; `plan start` + `task add`/`start`/`done`/`block`/`reopen`/
|
|
65
|
+
`list`/`show`; per-phase `validate` (brainstorm, spec, plan, execute) with
|
|
66
|
+
bidirectional REQ<->task coverage and acyclic dependency checks.
|
|
67
|
+
- **Phase transitions.** `advance` (validate-then-move) and `reopen` (reversible
|
|
68
|
+
phases), plus `checkpoint` for a resume prompt refreshed after every
|
|
69
|
+
state-mutating command.
|
|
70
|
+
- **Session-start integration.** `specflo hook reseed` / `hook print [--install]`
|
|
71
|
+
wire a clear-and-continue bridge into Claude Code's `SessionStart` hook,
|
|
72
|
+
re-grounding an agent from on-disk state after `/clear` or resume.
|
|
73
|
+
- **Skills.** `brainstorm`, `spec`, `plan`, `execute`, and a `research` subagent
|
|
74
|
+
that drive each phase over the CLI.
|