speccycle 1.0.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.
- speccycle-1.0.0/LICENSE +100 -0
- speccycle-1.0.0/MANIFEST.in +5 -0
- speccycle-1.0.0/PKG-INFO +436 -0
- speccycle-1.0.0/README.md +397 -0
- speccycle-1.0.0/pyproject.toml +76 -0
- speccycle-1.0.0/setup.cfg +4 -0
- speccycle-1.0.0/src/speccycle/__init__.py +79 -0
- speccycle-1.0.0/src/speccycle/approvals.py +156 -0
- speccycle-1.0.0/src/speccycle/auth.py +678 -0
- speccycle-1.0.0/src/speccycle/cli.py +678 -0
- speccycle-1.0.0/src/speccycle/config_api.py +325 -0
- speccycle-1.0.0/src/speccycle/console.py +42 -0
- speccycle-1.0.0/src/speccycle/context.py +499 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/behavior.md +37 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/blueprint.md +42 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/breakdown.md +30 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/build.md +36 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/discovery.md +53 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/foundation.md +22 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/intent.md +34 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/learning.md +28 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/mentor.md +14 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/orchestrator.md +12 -0
- speccycle-1.0.0/src/speccycle/data/en/agents/quality.md +35 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-behavior.md +1 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-blueprint.md +3 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-breakdown.md +2 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-build.md +2 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-intent.md +4 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-quality.md +2 -0
- speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-release.md +6 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/behavior.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/blueprint.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/breakdown.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/build.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/discovery.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/foundation.md +16 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/intent.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/learning.md +16 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/quality.md +17 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/scycle.index.md +18 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/scycle.mentor.md +16 -0
- speccycle-1.0.0/src/speccycle/data/en/commands/scycle.new.md +14 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/behaviors-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/blueprint-template.md +15 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/breakdown-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/build-log-template.md +5 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/discovery-template.md +15 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/feature-template.feature +7 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/foundation-template.md +38 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/increment-template.md +7 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/intent-template.md +10 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/learnings-template.md +7 -0
- speccycle-1.0.0/src/speccycle/data/en/templates/quality-report-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/0-foundation.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/1-discovery.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/2-intent.md +8 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/3-behavior.md +7 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/4-blueprint.md +7 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/5-breakdown.md +8 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/6-build.md +9 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/7-quality.md +10 -0
- speccycle-1.0.0/src/speccycle/data/en/workflows/8-learning.md +7 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/behavior.md +42 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/blueprint.md +53 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/breakdown.md +42 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/build.md +48 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/discovery.md +58 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/foundation.md +44 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/intent.md +45 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/learning.md +33 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/mentor.md +23 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/orchestrator.md +20 -0
- speccycle-1.0.0/src/speccycle/data/pt/agents/quality.md +42 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-behavior.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-blueprint.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-breakdown.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-build.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-intent.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-quality.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-release.md +6 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/behavior.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/blueprint.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/breakdown.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/build.md +23 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/discovery.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/foundation.md +15 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/intent.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/learning.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/quality.md +18 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.index.md +51 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.mentor.md +17 -0
- speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.new.md +14 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/behaviors-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/blueprint-template.md +20 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/breakdown-template.md +6 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/build-log-template.md +4 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/discovery-template.md +17 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/feature-template.feature +7 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/foundation-template.md +38 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/increment-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/intent-template.md +15 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/learnings-template.md +9 -0
- speccycle-1.0.0/src/speccycle/data/pt/templates/quality-report-template.md +12 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/0-foundation.md +9 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/1-discovery.md +8 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/2-intent.md +6 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/3-behavior.md +7 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/4-blueprint.md +8 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/5-breakdown.md +6 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/6-build.md +6 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/7-quality.md +8 -0
- speccycle-1.0.0/src/speccycle/data/pt/workflows/8-learning.md +6 -0
- speccycle-1.0.0/src/speccycle/design_cache.py +182 -0
- speccycle-1.0.0/src/speccycle/env_check.py +73 -0
- speccycle-1.0.0/src/speccycle/gates.py +755 -0
- speccycle-1.0.0/src/speccycle/i18n.py +908 -0
- speccycle-1.0.0/src/speccycle/i18n_web.py +484 -0
- speccycle-1.0.0/src/speccycle/orchestrator/__init__.py +8 -0
- speccycle-1.0.0/src/speccycle/orchestrator/antigravity_runtime.py +378 -0
- speccycle-1.0.0/src/speccycle/orchestrator/claude_runtime.py +222 -0
- speccycle-1.0.0/src/speccycle/orchestrator/github.py +327 -0
- speccycle-1.0.0/src/speccycle/orchestrator/runtime.py +191 -0
- speccycle-1.0.0/src/speccycle/paths.py +17 -0
- speccycle-1.0.0/src/speccycle/progress.py +203 -0
- speccycle-1.0.0/src/speccycle/project_config.py +44 -0
- speccycle-1.0.0/src/speccycle/scaffold.py +2314 -0
- speccycle-1.0.0/src/speccycle/server.py +1190 -0
- speccycle-1.0.0/src/speccycle/sessions.py +481 -0
- speccycle-1.0.0/src/speccycle/telemetry.py +957 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/favicon.svg +14 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/logo-dark.svg +23 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/logo-light.svg +23 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/mark-mono.svg +14 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/mark.svg +14 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/spec-cycle-logo.png +0 -0
- speccycle-1.0.0/src/speccycle/web/assets/brand/tokens.css +27 -0
- speccycle-1.0.0/src/speccycle/web/index.html +4954 -0
- speccycle-1.0.0/src/speccycle.egg-info/PKG-INFO +436 -0
- speccycle-1.0.0/src/speccycle.egg-info/SOURCES.txt +142 -0
- speccycle-1.0.0/src/speccycle.egg-info/dependency_links.txt +1 -0
- speccycle-1.0.0/src/speccycle.egg-info/entry_points.txt +2 -0
- speccycle-1.0.0/src/speccycle.egg-info/requires.txt +8 -0
- speccycle-1.0.0/src/speccycle.egg-info/top_level.txt +1 -0
speccycle-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
Copyright (c) 2026 Spec-Cycle
|
|
2
|
+
|
|
3
|
+
Spec-Cycle is licensed under the Elastic License 2.0 (ELv2), reproduced below.
|
|
4
|
+
The licensor is Spec-Cycle and the software is the Spec-Cycle client
|
|
5
|
+
(the "speccycle" package, including its CLI, web dashboard, agent prompts,
|
|
6
|
+
workflows, templates and checkpoints).
|
|
7
|
+
|
|
8
|
+
Elastic License 2.0
|
|
9
|
+
|
|
10
|
+
URL: https://www.elastic.co/licensing/elastic-license
|
|
11
|
+
|
|
12
|
+
## Acceptance
|
|
13
|
+
|
|
14
|
+
By using the software, you agree to all of the terms and conditions below.
|
|
15
|
+
|
|
16
|
+
## Copyright License
|
|
17
|
+
|
|
18
|
+
The licensor grants you a non-exclusive, royalty-free, worldwide,
|
|
19
|
+
non-sublicensable, non-transferable license to use, copy, distribute, make
|
|
20
|
+
available, and prepare derivative works of the software, in each case subject to
|
|
21
|
+
the limitations and conditions below.
|
|
22
|
+
|
|
23
|
+
## Limitations
|
|
24
|
+
|
|
25
|
+
You may not provide the software to third parties as a hosted or managed
|
|
26
|
+
service, where the service provides users with access to any substantial set of
|
|
27
|
+
the features or functionality of the software.
|
|
28
|
+
|
|
29
|
+
You may not move, change, disable, or circumvent the license key functionality
|
|
30
|
+
in the software, and you may not remove or obscure any functionality in the
|
|
31
|
+
software that is protected by the license key.
|
|
32
|
+
|
|
33
|
+
You may not alter, remove, or obscure any licensing, copyright, or other notices
|
|
34
|
+
of the licensor in the software. Any use of the licensor’s trademarks is subject
|
|
35
|
+
to applicable law.
|
|
36
|
+
|
|
37
|
+
## Patents
|
|
38
|
+
|
|
39
|
+
The licensor grants you a license, under any patent claims the licensor can
|
|
40
|
+
license, or becomes able to license, to make, have made, use, sell, offer for
|
|
41
|
+
sale, import and have imported the software, in each case subject to the
|
|
42
|
+
limitations and conditions in this license. This license does not cover any
|
|
43
|
+
patent claims that you cause to be infringed by modifications or additions to
|
|
44
|
+
the software. If you or your company make any written claim that the software
|
|
45
|
+
infringes or contributes to infringement of any patent, your patent license for
|
|
46
|
+
the software granted under these terms ends immediately. If your company makes
|
|
47
|
+
such a claim, your patent license ends immediately for work on behalf of your
|
|
48
|
+
company.
|
|
49
|
+
|
|
50
|
+
## Notices
|
|
51
|
+
|
|
52
|
+
You must ensure that anyone who gets a copy of any part of the software from you
|
|
53
|
+
also gets a copy of these terms.
|
|
54
|
+
|
|
55
|
+
If you modify the software, you must include in any modified copies of the
|
|
56
|
+
software prominent notices stating that you have modified the software.
|
|
57
|
+
|
|
58
|
+
## No Other Rights
|
|
59
|
+
|
|
60
|
+
These terms do not imply any licenses other than those expressly granted in
|
|
61
|
+
these terms.
|
|
62
|
+
|
|
63
|
+
## Termination
|
|
64
|
+
|
|
65
|
+
If you use the software in violation of these terms, such use is not licensed,
|
|
66
|
+
and your licenses will automatically terminate. If the licensor provides you
|
|
67
|
+
with a notice of your violation, and you cease all violation of this license no
|
|
68
|
+
later than 30 days after you receive that notice, your licenses will be
|
|
69
|
+
reinstated retroactively. However, if you violate these terms after such
|
|
70
|
+
reinstatement, any additional violation of these terms will cause your licenses
|
|
71
|
+
to terminate automatically and permanently.
|
|
72
|
+
|
|
73
|
+
## No Liability
|
|
74
|
+
|
|
75
|
+
*As far as the law allows, the software comes as is, without any warranty or
|
|
76
|
+
condition, and the licensor will not be liable to you for any damages arising
|
|
77
|
+
out of these terms or the use or nature of the software, under any kind of
|
|
78
|
+
legal claim.*
|
|
79
|
+
|
|
80
|
+
## Definitions
|
|
81
|
+
|
|
82
|
+
The **licensor** is the entity offering these terms, and the **software** is the
|
|
83
|
+
software the licensor makes available under these terms, including any portion
|
|
84
|
+
of it.
|
|
85
|
+
|
|
86
|
+
**you** refers to the individual or entity agreeing to these terms.
|
|
87
|
+
|
|
88
|
+
**your company** is any legal entity, sole proprietorship, or other kind of
|
|
89
|
+
organization that you work for, plus all organizations that have control over,
|
|
90
|
+
are under the control of, or are under common control with that
|
|
91
|
+
organization. **control** means ownership of substantially all the assets of an
|
|
92
|
+
entity, or the power to direct its management and policies by vote, contract, or
|
|
93
|
+
otherwise. Control can be direct or indirect.
|
|
94
|
+
|
|
95
|
+
**your licenses** are all the licenses granted to you for the software under
|
|
96
|
+
these terms.
|
|
97
|
+
|
|
98
|
+
**use** means anything you do with the software requiring one of your licenses.
|
|
99
|
+
|
|
100
|
+
**trademark** means trademarks, service marks, and similar rights.
|
speccycle-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: speccycle
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Spec-Cycle - Spec-Driven Development orchestrated by Intelligent Agents: 8 phases, approval gates and versioned artifacts in the repository
|
|
5
|
+
Author-email: Marcelo Pelegrini <mlpelegrini@gmail.com>
|
|
6
|
+
License-Expression: Elastic-2.0
|
|
7
|
+
Project-URL: Homepage, https://spec-cycle.com
|
|
8
|
+
Project-URL: Documentation, https://github.com/mlpelegrini/speccycle/blob/main/docs/manual-do-client.md
|
|
9
|
+
Project-URL: Repository, https://github.com/mlpelegrini/speccycle
|
|
10
|
+
Project-URL: Issues, https://github.com/mlpelegrini/speccycle/issues
|
|
11
|
+
Keywords: spec-driven-development,sdd,bdd,gherkin,claude-code,claude-agent-sdk,ai-agents,developer-tools
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Environment :: Web Environment
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Natural Language :: Portuguese (Brazilian)
|
|
17
|
+
Classifier: Natural Language :: English
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
26
|
+
Classifier: Topic :: Software Development
|
|
27
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
28
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
29
|
+
Requires-Python: >=3.10
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Requires-Dist: claude-agent-sdk>=0.1.0
|
|
33
|
+
Provides-Extra: antigravity
|
|
34
|
+
Requires-Dist: google-antigravity>=0.1.3; extra == "antigravity"
|
|
35
|
+
Provides-Extra: test
|
|
36
|
+
Requires-Dist: pytest>=7.0; extra == "test"
|
|
37
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "test"
|
|
38
|
+
Dynamic: license-file
|
|
39
|
+
|
|
40
|
+
<p align="center">
|
|
41
|
+
<img alt="Spec-Cycle" src="https://raw.githubusercontent.com/mlpelegrini/speccycle/main/src/speccycle/web/assets/brand/logo-light.svg" width="440">
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
> **Especifique. Aprove. Avance.** — Spec-Driven Development orquestrado pelo Claude Code.
|
|
45
|
+
|
|
46
|
+
> 📘 Manual completo de uso do client: [docs/manual-do-client.md](https://github.com/mlpelegrini/speccycle/blob/main/docs/manual-do-client.md)
|
|
47
|
+
>
|
|
48
|
+
> 🚀 Para mantenedores, o passo a passo de publicação no PyPI: [docs/howto-publicar-pypi.md](https://github.com/mlpelegrini/speccycle/blob/main/docs/howto-publicar-pypi.md)
|
|
49
|
+
|
|
50
|
+
O Spec-Cycle organiza o trabalho em 8 fases sequenciais — Discovery → Intent → Behavior → Blueprint → Breakdown → Build → Quality → Learning — orquestradas pelo Claude Code (via Claude Agent SDK).
|
|
51
|
+
|
|
52
|
+
O `scycle init` instala o vocabulário do framework no projeto:
|
|
53
|
+
|
|
54
|
+
- **Subagents** em `.claude/agents/` — um por agente do Spec-Cycle, com permissões mínimas por papel (fases de especificação não executam código; Build e Quality sim);
|
|
55
|
+
- **Slash commands** em `.claude/commands/scycle/` — um por fase (+ foundation);
|
|
56
|
+
- **Hooks de quality gate** em `.claude/settings.json` — bloqueiam a transição de fase sem o artefato anterior aprovado e verificam a consistência do diff contra a spec durante o Build.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Pré-requisitos
|
|
61
|
+
|
|
62
|
+
- Python 3.10 ou superior
|
|
63
|
+
- pip
|
|
64
|
+
|
|
65
|
+
Para verificar:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
python --version
|
|
69
|
+
pip --version
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Instalação
|
|
75
|
+
|
|
76
|
+
### Opção 1 — direto do repositório (recomendado para testar)
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Clone o repositório
|
|
80
|
+
git clone https://github.com/mlpelegrini/speccycle.git
|
|
81
|
+
cd speccycle
|
|
82
|
+
|
|
83
|
+
# Instale em modo editável (alterações no código refletem imediatamente)
|
|
84
|
+
pip install -e .
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Opção 2 — instalação global via pip
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
pip install speccycle
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Após a instalação, o comando `scycle` estará disponível no terminal:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
scycle --version
|
|
97
|
+
# Spec-Cycle 1.0.0
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Dados enviados à plataforma
|
|
101
|
+
|
|
102
|
+
O client conversa com a plataforma Spec-Cycle (`identity.spec-cycle.com`) para
|
|
103
|
+
validar a chave da organização e registrar o andamento das voltas. O que sai da
|
|
104
|
+
máquina:
|
|
105
|
+
|
|
106
|
+
- **Identificação:** e-mail, nome e organização do perfil conectado, um
|
|
107
|
+
`project_id` derivado do remote git e um `machine_id` anônimo.
|
|
108
|
+
- **Eventos da volta:** nome e descrição da volta, fase em andamento, tempo
|
|
109
|
+
decorrido e tokens consumidos por fase, além da versão do client e do sistema
|
|
110
|
+
operacional.
|
|
111
|
+
|
|
112
|
+
O que **não** sai da máquina: conteúdo de artefatos, código-fonte, prompts e
|
|
113
|
+
respostas dos agentes.
|
|
114
|
+
|
|
115
|
+
Para desligar o envio de eventos, defina `SPEC_CYCLE_TELEMETRY=0`. O comando
|
|
116
|
+
`scycle telemetry` mostra o estado da fila local e o que está pendente.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Como usar
|
|
121
|
+
|
|
122
|
+
### 1. Inicializar um projeto
|
|
123
|
+
|
|
124
|
+
Dentro da pasta do seu projeto (ou em uma nova pasta):
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Na pasta atual
|
|
128
|
+
scycle init --here
|
|
129
|
+
|
|
130
|
+
# Ou em uma nova pasta
|
|
131
|
+
scycle init meu-projeto
|
|
132
|
+
cd meu-projeto
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Isso cria a seguinte estrutura:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
.speccycle/
|
|
139
|
+
agents/ # prompts dos agentes por fase
|
|
140
|
+
workflows/ # guias de workflow
|
|
141
|
+
templates/ # templates dos artefatos
|
|
142
|
+
checkpoints/ # critérios de pronto entre fases
|
|
143
|
+
knowledge/
|
|
144
|
+
learnings/ # aprendizados acumulados entre ciclos
|
|
145
|
+
cycles/ # aqui ficam as voltas de desenvolvimento
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 2. Abrir o dashboard web
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
scycle start
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Acesse `http://127.0.0.1:8473` no navegador.
|
|
155
|
+
|
|
156
|
+
O cliente abre na **tela de conexão**: e-mail de trabalho + chave da organização
|
|
157
|
+
(criada em *Organização → API keys*, na plataforma). A chave vai para o cofre do
|
|
158
|
+
sistema operacional — Keychain no macOS, Secret Service no Linux, DPAPI no
|
|
159
|
+
Windows — e o perfil da sessão fica no diretório de configuração do usuário.
|
|
160
|
+
Nada disso entra no repositório. O botão **Sair**, no rodapé do sidebar, apaga
|
|
161
|
+
os dois.
|
|
162
|
+
|
|
163
|
+
Depois de conectar, o **Wizard da Foundation** pede as escolhas de stack
|
|
164
|
+
(linguagem, arquitetura e cloud).
|
|
165
|
+
|
|
166
|
+
Para usar uma porta diferente:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
scycle start --port 9000
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 3. Criar uma nova volta (ciclo)
|
|
173
|
+
|
|
174
|
+
Pelo dashboard, digite o nome da feature no campo "Nova volta", descreva em uma
|
|
175
|
+
linha o que ela entrega e clique em **Nova volta**.
|
|
176
|
+
|
|
177
|
+
Ou pela linha de comando:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
scycle new "Autenticação de usuários" --desc "Login com a chave da organização"
|
|
181
|
+
# Cria: cycles/001-autenticacao-de-usuarios/
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
O nome e a descrição acompanham os eventos da volta enviados à plataforma —
|
|
185
|
+
junto do andamento das fases, tempo e tokens consumidos. Nenhum conteúdo de
|
|
186
|
+
artefato ou de código sai da máquina; `scycle telemetry` mostra o que está
|
|
187
|
+
pendente de envio.
|
|
188
|
+
|
|
189
|
+
### 4. Executar as fases no Claude Code
|
|
190
|
+
|
|
191
|
+
Cada fase tem um comando de prompt correspondente:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
/scycle:discovery # fase 1 — problema e contexto
|
|
195
|
+
/scycle:intent # fase 2 — critérios de sucesso
|
|
196
|
+
/scycle:behavior # fase 3 — cenários Gherkin
|
|
197
|
+
/scycle:blueprint # fase 4 — arquitetura e contratos
|
|
198
|
+
/scycle:breakdown # fase 5 — incrementos com critérios de aceite
|
|
199
|
+
/scycle:build # fase 6 — construção com TDD
|
|
200
|
+
/scycle:quality # fase 7 — execução dos cenários e code review
|
|
201
|
+
/scycle:learn # fase 8 — aprendizados para a próxima volta
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
O dashboard acompanha o progresso automaticamente (atualiza a cada 5 segundos) conforme os artefatos de cada fase são gerados na pasta `cycles/NNN-nome/`.
|
|
205
|
+
|
|
206
|
+
Também é possível executar as fases direto pelo dashboard (botão **▶ rodar**): o servidor abre uma sessão com o Claude Agent SDK e transmite os eventos em tempo real. Requer a variável de ambiente `ANTHROPIC_API_KEY` (veja `.env.example`).
|
|
207
|
+
|
|
208
|
+
### 5. Aprovar os gates
|
|
209
|
+
|
|
210
|
+
Nenhuma fase começa sem a anterior aprovada. Quando uma fase conclui, aprove o gate pelo dashboard (botão **aprovar gate**) ou pela CLI:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
python -m speccycle.gates approve discovery
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
O hook de gate do Claude Code bloqueia `/scycle:<fase>` enquanto o artefato anterior não existir ou não estiver aprovado.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## As 8 fases do ciclo
|
|
221
|
+
|
|
222
|
+
O Spec-Cycle impõe uma sequência deliberada: as fases de **especificação** (1–5) precisam estar aprovadas antes que qualquer linha de código seja escrita nas fases de **execução** (6–7). Isso garante que o código sempre reflita uma decisão consciente, não uma suposição.
|
|
223
|
+
|
|
224
|
+
Cada fase termina com um **gate**: o artefato produzido é revisado e aprovado (pelo desenvolvedor ou pelo time) antes da fase seguinte começar. O hook do Claude Code bloqueia o comando da próxima fase enquanto o gate anterior não tiver sido aprovado.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
### Fase 0 — Foundation
|
|
229
|
+
|
|
230
|
+
**Objetivo:** selar as decisões estruturais do projeto antes de qualquer volta de desenvolvimento. A Foundation não é uma fase recorrente — ela é executada uma única vez na inicialização do projeto e serve de contexto permanente para todos os agentes de todas as voltas.
|
|
231
|
+
|
|
232
|
+
**O que o agente faz:** conduz um diálogo guiado para capturar a linguagem principal, a arquitetura adotada, a plataforma de cloud/infraestrutura e princípios inegociáveis do projeto (padrões de código, regras de segurança, convenções de time).
|
|
233
|
+
|
|
234
|
+
**Artefato:** `.speccycle/knowledge/foundation.md` — consultado automaticamente por todos os agentes antes de gerar qualquer artefato.
|
|
235
|
+
|
|
236
|
+
**Gate:** foundation selada → dashboard libera a criação de voltas.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### Fase 1 — Discovery
|
|
241
|
+
|
|
242
|
+
**Objetivo:** entender profundamente o problema antes de propor qualquer solução. A Discovery é deliberadamente livre de decisões técnicas — seu único produto é clareza sobre o contexto.
|
|
243
|
+
|
|
244
|
+
**O que o agente faz:**
|
|
245
|
+
- Pesquisa o estado atual do sistema (lê código, documentação, histórico de issues)
|
|
246
|
+
- Mapeia o problema central, os usuários afetados e o impacto esperado
|
|
247
|
+
- Identifica restrições conhecidas, riscos e hipóteses que precisam ser validadas
|
|
248
|
+
- Lê os `learnings.md` de voltas anteriores para não repetir erros já documentados
|
|
249
|
+
|
|
250
|
+
**Artefato:** `discovery.md` — contém o problema mapeado, contexto técnico e de negócio, hipóteses levantadas e perguntas ainda abertas.
|
|
251
|
+
|
|
252
|
+
**Gate:** o desenvolvedor confirma que o problema está descrito com precisão suficiente para escrever critérios de sucesso mensuráveis.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
### Fase 2 — Intent
|
|
257
|
+
|
|
258
|
+
**Objetivo:** converter o entendimento da Discovery em critérios de sucesso concretos e mensuráveis, sem ainda decidir como serão implementados.
|
|
259
|
+
|
|
260
|
+
**O que o agente faz:**
|
|
261
|
+
- Define o que significa "feito" para esta volta (critérios de aceite de negócio)
|
|
262
|
+
- Estabelece o que está **fora de escopo** (tão importante quanto o que está dentro)
|
|
263
|
+
- Lista restrições não-funcionais relevantes (performance, segurança, compatibilidade)
|
|
264
|
+
- Não cita tecnologias, frameworks ou estruturas de dados — essas decisões são da Blueprint
|
|
265
|
+
|
|
266
|
+
**Artefato:** `intent.md` — lista de critérios de sucesso numerados, escopo delimitado e restrições. Cada critério deve ser testável.
|
|
267
|
+
|
|
268
|
+
**Gate:** todo critério de sucesso é verificável e terá pelo menos um cenário Gherkin na fase seguinte.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
### Fase 3 — Behavior
|
|
273
|
+
|
|
274
|
+
**Objetivo:** traduzir cada critério de sucesso da Intent em cenários Gherkin executáveis. Os cenários são o **contrato** entre spec e código — se o cenário passa, o critério foi atendido.
|
|
275
|
+
|
|
276
|
+
**O que o agente faz:**
|
|
277
|
+
- Escreve arquivos `.feature` com cenários no formato `Dado / Quando / Então`
|
|
278
|
+
- Cobre o caminho feliz e os casos de borda relevantes para cada critério
|
|
279
|
+
- Garante cobertura total: nenhum critério da Intent sem ao menos um cenário
|
|
280
|
+
- Usa linguagem de domínio (não de implementação) para que os cenários sejam legíveis por qualquer stakeholder
|
|
281
|
+
|
|
282
|
+
**Artefato:** `behaviors/*.feature` — um ou mais arquivos Gherkin, um por área funcional ou por critério de sucesso.
|
|
283
|
+
|
|
284
|
+
**Gate:** cada critério numerado na Intent tem cobertura de cenário; nenhum cenário pressupõe uma implementação específica.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
### Fase 4 — Blueprint
|
|
289
|
+
|
|
290
|
+
**Objetivo:** decidir **como** a feature será construída — arquitetura, contratos de API, modelo de dados e decisões técnicas com suas justificativas. É aqui que tecnologias e padrões entram pela primeira vez.
|
|
291
|
+
|
|
292
|
+
**O que o agente faz:**
|
|
293
|
+
- Projeta a arquitetura da solução respeitando a Foundation (stack, padrões e restrições do projeto)
|
|
294
|
+
- Define contratos de API ou interfaces entre componentes (endpoints, assinaturas de função, esquemas)
|
|
295
|
+
- Documenta decisões técnicas relevantes como Architecture Decision Records (ADRs) embutidos
|
|
296
|
+
- Identifica dependências externas e pontos de integração
|
|
297
|
+
- Descreve o modelo de dados e as migrações necessárias, se aplicável
|
|
298
|
+
|
|
299
|
+
**Artefato:** `blueprint.md` — diagrama textual da arquitetura, contratos de interface, ADRs e qualquer decisão de design que afete a implementação.
|
|
300
|
+
|
|
301
|
+
**Gate:** a Blueprint é consistente com a Foundation; os contratos cobrem todos os cenários da Behavior; nenhuma decisão relevante ficou implícita.
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
### Fase 5 — Breakdown
|
|
306
|
+
|
|
307
|
+
**Objetivo:** decompor a Blueprint em incrementos de implementação pequenos, sequenciados e independentes — cada um com seus próprios critérios de aceite derivados dos cenários Gherkin.
|
|
308
|
+
|
|
309
|
+
**O que o agente faz:**
|
|
310
|
+
- Divide o trabalho em incrementos de 1–4 horas de implementação cada
|
|
311
|
+
- Ordena os incrementos respeitando dependências técnicas (ex.: modelo de dados antes da API)
|
|
312
|
+
- Para cada incremento: define o que deve ser implementado, quais cenários Gherkin ele fecha e como verificar que está pronto
|
|
313
|
+
- Identifica quais incrementos podem ser desenvolvidos em paralelo
|
|
314
|
+
|
|
315
|
+
**Artefato:** `breakdown.md` + `increments/NNN-nome.md` — lista de incrementos com critérios de aceite individuais e ordem de execução.
|
|
316
|
+
|
|
317
|
+
**Gate:** o somatório dos incrementos cobre todos os cenários da Behavior; nenhum incremento é grande demais para ser construído e verificado em uma única sessão de Build.
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
### Fase 6 — Build
|
|
322
|
+
|
|
323
|
+
**Objetivo:** implementar cada incremento do Breakdown seguindo TDD guiado pelos cenários Gherkin. O código só avança quando os cenários do incremento passam.
|
|
324
|
+
|
|
325
|
+
**O que o agente faz:**
|
|
326
|
+
- Processa os incrementos na ordem definida no Breakdown, um de cada vez
|
|
327
|
+
- Para cada incremento: escreve ou adapta os testes derivados dos cenários → implementa o mínimo para passar → refatora
|
|
328
|
+
- Respeita os contratos da Blueprint: não inventa interfaces, não muda o modelo de dados sem documentar
|
|
329
|
+
- Registra decisões de implementação relevantes e desvios justificados no log
|
|
330
|
+
|
|
331
|
+
**Artefato:** `build-log.md` — registro de cada incremento: o que foi implementado, quais testes passaram, e qualquer desvio da Blueprint com justificativa.
|
|
332
|
+
|
|
333
|
+
**Gate:** todos os incrementos estão implementados; os testes dos cenários cobertos passam; nenhum desvio da Blueprint está sem justificativa registrada.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### Fase 7 — Quality
|
|
338
|
+
|
|
339
|
+
**Objetivo:** verificar que o que foi construído no Build corresponde ao que foi especificado na Behavior — e que a qualidade geral do código está adequada.
|
|
340
|
+
|
|
341
|
+
**O que o agente faz:**
|
|
342
|
+
- Executa a suíte de testes completa e verifica que todos os cenários Gherkin da volta passam
|
|
343
|
+
- Faz code review do diff da volta: correctness, segurança, performance e aderência à Foundation
|
|
344
|
+
- Verifica consistência entre o código produzido e os contratos da Blueprint
|
|
345
|
+
- Aponta regressões ou cenários que passaram na Behavior mas falharam na execução real
|
|
346
|
+
- Produz um relatório com o resultado de cada cenário e os achados do review
|
|
347
|
+
|
|
348
|
+
**Artefato:** `quality-report.md` — resultado dos cenários (✓ passou / ✗ falhou), achados do code review categorizados por severidade e lista de itens que precisam de correção antes da aprovação.
|
|
349
|
+
|
|
350
|
+
**Gate:** todos os cenários da Behavior passam; os achados críticos e altos do review foram endereçados; nenhuma regressão identificada sem plano de resolução.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
### Fase 8 — Learning
|
|
355
|
+
|
|
356
|
+
**Objetivo:** extrair aprendizados concretos desta volta para que a próxima comece com mais contexto e menos fricção. É o mecanismo de melhoria contínua do Spec-Cycle.
|
|
357
|
+
|
|
358
|
+
**O que o agente faz:**
|
|
359
|
+
- Revisa os artefatos de toda a volta (do discovery.md ao quality-report.md)
|
|
360
|
+
- Identifica o que funcionou bem e deve ser repetido
|
|
361
|
+
- Documenta o que não funcionou e como deveria ter sido feito
|
|
362
|
+
- Registra surpresas: o que a Discovery não antecipou, o que a Blueprint errou, o que o Build revelou
|
|
363
|
+
- Consolida os aprendizados em um formato que o agente de Discovery da próxima volta conseguirá consumir diretamente
|
|
364
|
+
|
|
365
|
+
**Artefato:** `learnings.md` — lista estruturada de aprendizados com contexto suficiente para serem acionáveis na próxima volta.
|
|
366
|
+
|
|
367
|
+
**Gate:** os aprendizados são específicos e acionáveis (não genéricos); a volta está encerrada e o dashboard marca todas as 8 fases como concluídas.
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## Integração opcional com o GitHub
|
|
372
|
+
|
|
373
|
+
Com um remote GitHub e a variável `GITHUB_TOKEN` definida, as sessões de agente ganham o servidor MCP do GitHub e espelham o estado: volta ↔ issue (label `speccycle`), fase ↔ branch/PR `cycle/NNN-nome/fase`, gate ↔ review. Os arquivos locais continuam sendo a fonte de verdade — sem token, tudo funciona offline.
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## API de orquestração
|
|
378
|
+
|
|
379
|
+
O servidor local expõe a API que o dashboard (e futuras interfaces) consome:
|
|
380
|
+
|
|
381
|
+
| Rota | Função |
|
|
382
|
+
|---|---|
|
|
383
|
+
| `GET /api/state` | Estado das fases, derivado dos arquivos da volta |
|
|
384
|
+
| `POST /api/sessions` · `POST /api/sessions/{id}/messages` · `GET /api/sessions/{id}/stream` (SSE) | Iniciar fase, conversar com o agente, stream de eventos |
|
|
385
|
+
| `POST /api/gates/approve` | Registrar aprovação de gate |
|
|
386
|
+
| `GET/PUT/DELETE /api/config/...` | CRUD de toda a configuração do Claude Code (subagents, commands, hooks/permissões, servidores MCP, CLAUDE.md), com validação de esquema e commit automático |
|
|
387
|
+
|
|
388
|
+
Exemplo de ponta a ponta em [`examples/run_cycle.py`](examples/run_cycle.py).
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Executar os testes
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
pip install -e ".[test,antigravity]" # pytest, pytest-asyncio e o SDK do Antigravity
|
|
396
|
+
python -m pytest tests/ -q
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Sem o extra `antigravity`, os testes do runtime Antigravity são pulados.
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
|
|
403
|
+
## Estrutura de uma volta
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
cycles/001-autenticacao-de-usuarios/
|
|
407
|
+
cycle.json # metadados (nome, data de criação)
|
|
408
|
+
discovery.md # artefato da fase Discovery
|
|
409
|
+
intent.md # artefato da fase Intent
|
|
410
|
+
behaviors/ # cenários Gherkin (.feature)
|
|
411
|
+
blueprint.md # artefato da fase Blueprint
|
|
412
|
+
breakdown.md # decomposição em incrementos
|
|
413
|
+
increments/ # arquivos de incremento individuais
|
|
414
|
+
contracts/ # contratos de API / interfaces
|
|
415
|
+
build-log.md # log da fase Build
|
|
416
|
+
quality-report.md # relatório da fase Quality
|
|
417
|
+
learnings.md # aprendizados da volta
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## Licença
|
|
423
|
+
|
|
424
|
+
Distribuído sob a [Elastic License 2.0 (ELv2)](LICENSE). Copyright 2026 Spec-Cycle.
|
|
425
|
+
|
|
426
|
+
Em resumo, você pode usar, copiar, modificar e redistribuir o client, inclusive
|
|
427
|
+
em uso comercial dentro da sua organização. Você **não** pode:
|
|
428
|
+
|
|
429
|
+
- oferecer o Spec-Cycle a terceiros como serviço gerenciado ou hospedado;
|
|
430
|
+
- mover, alterar, desabilitar ou contornar a exigência da chave da plataforma,
|
|
431
|
+
nem remover funcionalidades protegidas por ela;
|
|
432
|
+
- remover ou ocultar os avisos de licença, copyright e marca.
|
|
433
|
+
|
|
434
|
+
O texto completo, em inglês, está em [LICENSE](LICENSE). A ELv2 não é uma
|
|
435
|
+
licença open source segundo a definição da OSI; o código-fonte fica disponível
|
|
436
|
+
para leitura e adaptação sob os termos acima.
|