Releases: nullhack/python-project-template
v6.4.20260420 - Minimal Prometheus
v6.4.20260420 - Minimal Prometheus
"Precision without ornamentation. Design without noise."
Changelog
Added
- Branding system:
docs/branding.md— project identity, colour palette, release naming convention, and wording guidelines; agents read this file to personalise release names, C4 diagram colours, and docs without touching.opencode/(#89) - Designer agent (
designer.md): ownsdocs/branding.mdanddocs/assets/; usesdesign-colorsanddesign-assetsskills (#89) design-colorsskill: step-by-step colour palette selection with WCAG 2.1 AA 4.5:1 contrast validation; Itten/Albers colour theory embedded inline (#89)design-assetsskill: SVG banner and logo creation workflow; W3C SVG 2 spec and WCAG 1.1.1aria-labelrequirements embedded (#89)setup-projectStep 6 Branding: collects tagline, mission, vision, tone, theme, and colours; suggests WCAG-validated palettes when user provides a theme but no colours; writesdocs/branding.md(#89)- Output Style + Rule #8 in
run-sessionskill: minimalist output discipline — signal only, no tool narration, session ends withNext:line (#89)
Changed
- Skill renames to verb-noun convention:
session-workflow → run-session,scope → define-scope,implementation → implement,feature-selection → select-feature,living-docs → update-docs,pr-management → create-pr,design-patterns → apply-patterns,code-quality → check-quality— all references updated across agents, skills, andAGENTS.md(#89) docs/images/→docs/assets/: asset directory renamed;README.mdpath updated (#89)git-releasev1.1: readsdocs/branding.mdfor optional release naming and theme; release name omitted from commit/release title if convention is absent (#89)update-docsskill: readsdocs/branding.mdprimary/accent colours to apply Mermaid C4 diagram theming (#89)
Summary
This release introduces a branding layer that lets each project instance personalise its agents' output — from release names to diagram colours — through a single docs/branding.md file, with no changes to .opencode/. A new designer agent and two design skills bring WCAG-validated colour and SVG asset workflows into the template. All 8 skills are renamed to verb-noun convention for consistency. The name Minimal Prometheus honours the Greek antiquity theme set in the template's own branding and the minimalist output discipline added to run-session.
SHA: 4cd2b8f
v6.3.20260419
Bump pytest-beehave to 3.3
v6.2.20260419 - Autonomous Stenella
v6.2.20260419 - Autonomous Stenella
"The workflow runs itself — IDs assigned, stubs generated, declarations enforced."
Changelog
Added
- pytest-beehave integration:
@idtags now auto-assigned to untaggedExample:blocks on everypytestrun; test stubs auto-generated from.featurefiles at Step 2 end — no manual ID generation or stub writing required (#78) - Self-declaration defense in depth: all 25 items numbered 1–25 in
implementation/SKILL.md;verify/SKILL.mdnow hard-gates on completeness (count must equal 25, sequence must be gapless) before item audit begins (#78)
Changed
- Naming convention:
.featurepaths use<feature-stem>(kebab); test dirs use<feature_slug>(underscore) — applied across all skills,AGENTS.md, and docs (#78) conftest.py: removed manualdeprecatedskip hook — now owned by pytest-beehave (#78)scope/SKILL.md: removed all manual@idgeneration instructions and uniqueness checklist items (#78)product-owner.md: PO writesExample:blocks only — no@idauthoring (#78)- README: added "Why this template?" section;
pytest-beehavein tooling table; auto-generation illustrated (#78) verify/SKILL.mdreport table: expanded Self-Declaration Audit from 21 to 25 numbered rows (#78)
Summary
This release makes the workflow autonomous at two key friction points: @id tag assignment and test stub generation now happen automatically when tests run, removing the most error-prone manual steps from the SE and PO roles. The numbered self-declaration with reviewer completeness enforcement closes the gap between a 21-item report table and the 25-item declaration template.
The name Autonomous Stenella (Stenella = spotted dolphin genus) reflects a workflow that navigates on its own.
SHA: dd9a6d6
v6.1.20260419 - Contextual Ambystoma
v6.1.20260419 - Contextual Ambystoma
"Living documentation, context-aware vocabulary, and a slimmer reviewer — all crystallised."
Changelog
Added
- feat: living-docs skill — C4 diagrams and glossary now updated as part of the release process (#77)
Fixed
- fix: correct stale Self-Declaration location references in verify skill (#77)
Changed
- refactor: slim reviewer.md and verify skill to reduce token load (#77)
Summary
This hotfix ships three post-release improvements to v6.1.20260419: the living-docs skill is now integrated into the git-release process (step 5), the verify skill's Self-Declaration audit section references are corrected, and the reviewer agent has been trimmed to reduce context overhead.
SHA: 633e701
v6.0.20260419 - Declarative Nautilus
v6.0.20260419 - Declarative Nautilus
"Explicit accountability at every handoff — declarations before commits, stances before verdicts."
Changelog
Added
- PO Self-Declaration (11 claims): mandatory checklist at end of Stage 2 Step B written into TODO.md; every DISAGREE is a hard blocker before criteria commit (#71)
- Reviewer Stance Declaration (5 claims): inserted into verify/SKILL.md report template before APPROVED/REJECTED verdict; adversarial mindset, manual trace, boundary check, semantic read, independence (#71)
- session-workflow: Step 1 Stage 2 Criteria TODO format section with Self-Declaration template; Rule 9 enforcing declaration before criteria commit (#71)
- Three append-only project docs:
docs/discovery_journal.md,docs/discovery.md,docs/architecture.mdreplace the old flatdocs/features/discovery.md(#70)
Changed
- Discovery model (breaking): Phase 1/2/3/4 replaced by 2-stage model — Stage 1 Discovery (iterative, PO + stakeholder) and Stage 2 Specification (PO alone, per BASELINED feature) (#70)
- Feature file moves (breaking): PO is sole owner of all
.featurefile moves; SE and reviewer explicitly prohibited; escalation protocol when no in-progress feature found (#70) - Session protocol: journal sessions use
Status: IN-PROGRESS/COMPLETEmarkers; real-time split rule for features; journal writes only answered Q&A in groups (#70) - Bug handling: PO adds
@bug @idExample; SE writes both the@idtest and a@givenHypothesis property test; both required (#70) - All agent files and skills updated to reflect new document model, terminology, and chain of responsibility (#70, #71)
Summary
v6.0 completes the accountability model for the full 5-step workflow. Every agent now declares their work before handing off: the PO signs off on spec quality (Stage 2 Step B), the software-engineer signs off on design correctness (Step 3), and the reviewer declares their adversarial stance (Step 4). The discovery model is simplified from a 4-phase structure to 2 stages, with clear file ownership and explicit escalation at every boundary.
The name reflects the nautilus — methodical, chambered, each compartment sealed before the next begins.
SHA: d8d6492
v5.0.20260418 - Structured Phascolarctos
v5.0.20260418 - Structured Phascolarctos
"A methodical, highly specialised structure for every step of the workflow."
Changelog
Added
- feat: design-patterns skill with GoF catalogue, smell-triggered patterns, SOLID, OC, Python Zen (#65)
- feat: create-agent skill with research-backed design patterns (#65)
- feat: software-engineer agent replacing developer.md (#65)
- feat: 3-session discovery structure with template gates in scope skill (#65)
- feat: architecture stubs protocol, feature-selection scoring, refactor skill with Fowler catalogue (#67)
- feat: Core Heuristic — Procedural vs OOP section added to design-patterns skill
Changed
- refactor: 5-step workflow — TDD loop merged to Step 3, Verify is Step 4, Accept is Step 5 (#65)
- refactor: "Cluster" renamed to "behavior group" throughout for clearer AI focus (#65)
- refactor: test stubs now use
@pytest.mark.skip(reason="not yet implemented")instead ofraise NotImplementedError(#65) - refactor: dropped
@pytest.mark.unitand@pytest.mark.integrationmarkers — onlyslowanddeprecatedremain (#65) - fix: BASELINED gate enforced — PO cannot move feature to in-progress without Status: BASELINED (#65)
- fix: stale developer/developer.md role references replaced with software-engineer throughout (#68)
- fix: agent-name placeholders corrected in session-workflow skill (#68)
- fix: OC-8 instance variable limit clarified — applies to behavioural classes only; dataclasses, Pydantic models, value objects, and TypedDicts are exempt (#69)
- fix: SELF-DECLARE phase added to Step 3 TDD loop diagram and Cycle State phase list in docs/workflow.md (#69)
- chore: tdd skill and gen_test_stubs.py removed (#65)
Fixed
- fix: pyproject.toml — removed broken gen-tests task, removed raise NotImplementedError from coverage exclusions (#65)
- fix: all "6 steps" references updated to "5 steps" (#65)
Summary
This is a major version bump reflecting the breaking restructure of the entire workflow from 6 steps to 5 steps. The TDD loop is now a single step, and all agents, skills, and documentation have been updated to match. Test stub format changed from raise NotImplementedError to @pytest.mark.skip, and the unit/integration marker system has been removed in favour of folder-based test classification. Subsequent hotfixes clarified agent naming, the OC-8 instance variable rule (data models are exempt), and added the missing SELF-DECLARE phase to the workflow diagram. The name Structured Phascolarctos reflects the deliberate, specialised structure that this release brings to every phase of the workflow.
SHA: d1b2d40
v4.0.20260416 - Precise Tarsius
v4.0.20260416 - Precise Tarsius
"Verification that starts at the moment of writing, not at the end."
Changelog
Added
- Per-test Design Self-Declaration: After REFACTOR, developer fills a 20-item checklist (YAGNI → KISS → DRY → SOLID-S/O/L/I/D → OC rules 1–9) with
file:lineevidence before requesting reviewer check; reviewer independently audits claims using an 11-row comparison table - Package Verification step: Mandatory before writing any code — read
pyproject.toml → [tool.setuptools] packages, confirm directory exists on disk; hard stop if missing - SELF-DECLARE phase: New phase in the Red-Green-Refactor cycle; Cycle State now
RED | GREEN | REFACTOR | SELF-DECLARE | REVIEWER(code-design) | COMMITTED - template-config.yaml: Declarative single source of truth for all setup-project substitutions — replaces
project_defaults.json - Post-mortem docs: Two ping-pong-cli post-mortems documenting the systemic failures that drove this release
Fixed
gen_todo.pypath:parents[5]→parents[4](was resolving above project root)- Stale Docker references:
python_package_template.python_module_template→app - Reviewer Step 4 protocol: clarified no commands during per-test reviews
- session-workflow Cycle State: SELF-DECLARE phase added to documented phases
Breaking Changes
project_defaults.jsondeleted — usetemplate-config.yamlapp/version.pydeleted — template app simplified to minimal__main__.py
Summary
Precise Tarsius introduces per-test design accountability: the developer self-declares compliance with every design principle (with evidence) before asking the reviewer, and the reviewer independently audits those claims rather than reading code cold. This mirrors how a tarsier's outsized eyes give it exceptional precision in darkness — the workflow now surfaces violations at the exact moment they occur rather than accumulating them for a distant Step 5 review.
The release also fixes two systemic failures identified in ping-pong-cli post-mortems: code landing in the wrong package directory (fixed by mandatory Package Verification), and design principle violations not caught in review (fixed by the Self-Declaration + structured comparison table).
SHA: e1db40e
v3.2.20260415 - Vigilant Mantis
v3.2.20260415 - Vigilant Mantis
"Sharp eyes, patient method, adversarial by nature."
Changelog
Added
- Adversarial verification mandate: Reviewer's default hypothesis is now "the code is broken despite green checks" — job is to find the failure mode, not confirm it works (#54)
- Production-grade gate: New step 3 in verification — app must exit cleanly AND output must change when input changes; static output regardless of input = REJECTED (#54)
- UUID Drift bash check: One-liner detects duplicate UUIDs across test functions; any duplicate = REJECTED with fix instructions (#54)
- docs/academic_research.md: 15 cognitive and social science mechanisms with full citations grounding every workflow design decision (#54)
- Design pattern decision table: Added to developer.md and implementation/SKILL.md; any detected anti-pattern = REJECTED (#54)
- Architecture contradiction check: Developer must cross-check ADRs against ACs before writing production code (#54)
- PO pre-mortem: Added at scope step and acceptance step (#54)
- Semantic alignment rule: Tests must operate at same abstraction level as AC (#54)
- Integration test requirement: Multi-component features require at least one integration test through the public entry point (#54)
- Verification Philosophy section: Added to AGENTS.md (#54)
Changed
- Verification order: Code review before automated commands; run app first as production-grade gate (#54)
- All review sections converted to tables: Correctness, KISS, SOLID, ObjCal, Design Patterns, Tests, Versions/Build all have PASS/FAIL/Fix columns (#54)
- UUID Uniqueness rule: If only Given varies it is a property — use Hypothesis
@given+@example, not multiple test functions (#54) - Production-grade self-check in implementation: Developer must verify output changes with input before handoff (#54)
- AGENTS.md: Research foundations reference removed — academic research doc is for stakeholders only, not agent context (#55)
Summary
This release hardens the verification workflow against the failure modes identified in the ping-pong incident: no adversarial review, rules as prose that LLMs can hedge, and tests that verify functions instead of user-observable behavior. The reviewer is now explicitly adversarial, all checklists are structured tables with PASS/FAIL/Fix columns, and a production-grade gate ensures the app produces real behavior before code review begins. The name reflects the release theme: a mantis is precise, patient, and adversarial by nature.
SHA: 8be1b47
v3.1.20260414 - Tidal Capybara
v3.1.20260414 - Tidal Capybara
A steady, methodical current of standards flowing into place.
Changelog
Added
- extend-criteria skill: Any agent can now add acceptance criteria discovered mid-flight or post-merge, with decision rule, per-role procedures, and commit protocol
- Source: field on acceptance criteria: Mandatory traceability field (
stakeholder | po | developer | reviewer | bug) — records who originated each requirement
Changed
- Test function naming:
test_<short_title>replacestest_<condition>_should_<outcome> - Test docstring first line: UUID only, no trailing description
- Commands: All skill/agent files use
uv run taskconsistently - tests/ layout: Documented as flat (no unit/ or integration/ subdirs)
- pytest.skip: Allowed with written justification in the docstring
- TODO.md markers:
[~](in progress) and[-](cancelled) documented - exit code wording:
exit non-124(was ambiguousexit 0 or 124) - README:
uv sync --all-extrasanduv run taskthroughout
Fixed
- Removed stale
auto-publish-docs.mdfrom in-progress - Split compound acceptance criterion into two single-outcome criteria
- Added
@pytest.mark.slowto Hypothesis tests in reference implementation - Removed duplicate assertion from reference test
StringIOimport moved to module level
SHA: ea8b9a7
Release v3.0.20260414 - Drifting Axolotl
Release v3.0.20260414 - Drifting Axolotl
"Like an axolotl drifting through clear water, this release simplifies everything — fewer roles, fewer skills, cleaner workflow."
Changelog
Breaking Changes
- Workflow redesigned: 8-phase/6-role system replaced with 6-step/3-role (Product Owner, Developer, Reviewer)
- Roles removed: architect, manager, repo-manager, requirements-gatherer, overseer agents deleted
- Feature directories restructured: `docs/features/{business,architecture}/` replaced with flat `docs/features/{backlog,in-progress,completed}/`
Features
- Add product-owner agent: defines scope, picks features, accepts deliveries (Steps 1+6)
- Add reviewer agent: read+bash only, runs all commands, APPROVED/REJECTED report (Step 5)
- Add scope skill: PO guide for user stories + UUID acceptance criteria
- Add verify skill: reviewer guide for command verification and code review
- Add unified docs site: `docs/index.html` landing page linking to API, Coverage, Tests
- Add ghp-import: `task doc-publish` is now a one-liner
Refactoring
- developer agent now owns all of Steps 2-4+6 including architecture, tests, code, and release
- 9 skills rewritten lean (<150 lines each): session-workflow, tdd, implementation, code-quality, pr-management, git-release, create-skill
- setup-project agent no longer uses setup_project.py — applies changes directly
- CI workflow cleaned up to use `uv run task ` consistently
- License check switched from allow-list to deny-list (avoids SPDX compound expression mismatch)
Documentation
- Rewrite README for v3: 3 roles, 6 steps, correct commands, no stale references
- Update CHANGELOG
Removed
- 11 skills deleted (architectural-analysis, delegation-coordination, epic-workflow, feature-definition, qa-enforcement, requirements-management, signature-design, workflow-coordination, prototype-script, create-agent, reference/)
- `setup_project.py` script and `.opencode/templates/` directory
- Wrong `dotenv` dependency (unused and wrong package name)
- `mutmut` dev dependency (YAGNI)
Summary
v3.0 is a ground-up simplification. The v2 system had 6 specialized roles, 8 development phases, 17 skills, and QA gates enforced by documents rather than commands. v3 reduces this to 3 roles, 6 steps, 9 skills, and a single rule: every quality check must be answerable by running a command.
SHA: `cfd466f`