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.
Files changed (144) hide show
  1. speccycle-1.0.0/LICENSE +100 -0
  2. speccycle-1.0.0/MANIFEST.in +5 -0
  3. speccycle-1.0.0/PKG-INFO +436 -0
  4. speccycle-1.0.0/README.md +397 -0
  5. speccycle-1.0.0/pyproject.toml +76 -0
  6. speccycle-1.0.0/setup.cfg +4 -0
  7. speccycle-1.0.0/src/speccycle/__init__.py +79 -0
  8. speccycle-1.0.0/src/speccycle/approvals.py +156 -0
  9. speccycle-1.0.0/src/speccycle/auth.py +678 -0
  10. speccycle-1.0.0/src/speccycle/cli.py +678 -0
  11. speccycle-1.0.0/src/speccycle/config_api.py +325 -0
  12. speccycle-1.0.0/src/speccycle/console.py +42 -0
  13. speccycle-1.0.0/src/speccycle/context.py +499 -0
  14. speccycle-1.0.0/src/speccycle/data/en/agents/behavior.md +37 -0
  15. speccycle-1.0.0/src/speccycle/data/en/agents/blueprint.md +42 -0
  16. speccycle-1.0.0/src/speccycle/data/en/agents/breakdown.md +30 -0
  17. speccycle-1.0.0/src/speccycle/data/en/agents/build.md +36 -0
  18. speccycle-1.0.0/src/speccycle/data/en/agents/discovery.md +53 -0
  19. speccycle-1.0.0/src/speccycle/data/en/agents/foundation.md +22 -0
  20. speccycle-1.0.0/src/speccycle/data/en/agents/intent.md +34 -0
  21. speccycle-1.0.0/src/speccycle/data/en/agents/learning.md +28 -0
  22. speccycle-1.0.0/src/speccycle/data/en/agents/mentor.md +14 -0
  23. speccycle-1.0.0/src/speccycle/data/en/agents/orchestrator.md +12 -0
  24. speccycle-1.0.0/src/speccycle/data/en/agents/quality.md +35 -0
  25. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-behavior.md +1 -0
  26. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-blueprint.md +3 -0
  27. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-breakdown.md +2 -0
  28. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-build.md +2 -0
  29. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-intent.md +4 -0
  30. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-quality.md +2 -0
  31. speccycle-1.0.0/src/speccycle/data/en/checkpoints/ready-for-release.md +6 -0
  32. speccycle-1.0.0/src/speccycle/data/en/commands/behavior.md +17 -0
  33. speccycle-1.0.0/src/speccycle/data/en/commands/blueprint.md +17 -0
  34. speccycle-1.0.0/src/speccycle/data/en/commands/breakdown.md +17 -0
  35. speccycle-1.0.0/src/speccycle/data/en/commands/build.md +17 -0
  36. speccycle-1.0.0/src/speccycle/data/en/commands/discovery.md +17 -0
  37. speccycle-1.0.0/src/speccycle/data/en/commands/foundation.md +16 -0
  38. speccycle-1.0.0/src/speccycle/data/en/commands/intent.md +17 -0
  39. speccycle-1.0.0/src/speccycle/data/en/commands/learning.md +16 -0
  40. speccycle-1.0.0/src/speccycle/data/en/commands/quality.md +17 -0
  41. speccycle-1.0.0/src/speccycle/data/en/commands/scycle.index.md +18 -0
  42. speccycle-1.0.0/src/speccycle/data/en/commands/scycle.mentor.md +16 -0
  43. speccycle-1.0.0/src/speccycle/data/en/commands/scycle.new.md +14 -0
  44. speccycle-1.0.0/src/speccycle/data/en/templates/behaviors-template.md +9 -0
  45. speccycle-1.0.0/src/speccycle/data/en/templates/blueprint-template.md +15 -0
  46. speccycle-1.0.0/src/speccycle/data/en/templates/breakdown-template.md +9 -0
  47. speccycle-1.0.0/src/speccycle/data/en/templates/build-log-template.md +5 -0
  48. speccycle-1.0.0/src/speccycle/data/en/templates/discovery-template.md +15 -0
  49. speccycle-1.0.0/src/speccycle/data/en/templates/feature-template.feature +7 -0
  50. speccycle-1.0.0/src/speccycle/data/en/templates/foundation-template.md +38 -0
  51. speccycle-1.0.0/src/speccycle/data/en/templates/increment-template.md +7 -0
  52. speccycle-1.0.0/src/speccycle/data/en/templates/intent-template.md +10 -0
  53. speccycle-1.0.0/src/speccycle/data/en/templates/learnings-template.md +7 -0
  54. speccycle-1.0.0/src/speccycle/data/en/templates/quality-report-template.md +9 -0
  55. speccycle-1.0.0/src/speccycle/data/en/workflows/0-foundation.md +9 -0
  56. speccycle-1.0.0/src/speccycle/data/en/workflows/1-discovery.md +9 -0
  57. speccycle-1.0.0/src/speccycle/data/en/workflows/2-intent.md +8 -0
  58. speccycle-1.0.0/src/speccycle/data/en/workflows/3-behavior.md +7 -0
  59. speccycle-1.0.0/src/speccycle/data/en/workflows/4-blueprint.md +7 -0
  60. speccycle-1.0.0/src/speccycle/data/en/workflows/5-breakdown.md +8 -0
  61. speccycle-1.0.0/src/speccycle/data/en/workflows/6-build.md +9 -0
  62. speccycle-1.0.0/src/speccycle/data/en/workflows/7-quality.md +10 -0
  63. speccycle-1.0.0/src/speccycle/data/en/workflows/8-learning.md +7 -0
  64. speccycle-1.0.0/src/speccycle/data/pt/agents/behavior.md +42 -0
  65. speccycle-1.0.0/src/speccycle/data/pt/agents/blueprint.md +53 -0
  66. speccycle-1.0.0/src/speccycle/data/pt/agents/breakdown.md +42 -0
  67. speccycle-1.0.0/src/speccycle/data/pt/agents/build.md +48 -0
  68. speccycle-1.0.0/src/speccycle/data/pt/agents/discovery.md +58 -0
  69. speccycle-1.0.0/src/speccycle/data/pt/agents/foundation.md +44 -0
  70. speccycle-1.0.0/src/speccycle/data/pt/agents/intent.md +45 -0
  71. speccycle-1.0.0/src/speccycle/data/pt/agents/learning.md +33 -0
  72. speccycle-1.0.0/src/speccycle/data/pt/agents/mentor.md +23 -0
  73. speccycle-1.0.0/src/speccycle/data/pt/agents/orchestrator.md +20 -0
  74. speccycle-1.0.0/src/speccycle/data/pt/agents/quality.md +42 -0
  75. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-behavior.md +4 -0
  76. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-blueprint.md +4 -0
  77. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-breakdown.md +4 -0
  78. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-build.md +4 -0
  79. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-intent.md +4 -0
  80. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-quality.md +4 -0
  81. speccycle-1.0.0/src/speccycle/data/pt/checkpoints/ready-for-release.md +6 -0
  82. speccycle-1.0.0/src/speccycle/data/pt/commands/behavior.md +18 -0
  83. speccycle-1.0.0/src/speccycle/data/pt/commands/blueprint.md +18 -0
  84. speccycle-1.0.0/src/speccycle/data/pt/commands/breakdown.md +18 -0
  85. speccycle-1.0.0/src/speccycle/data/pt/commands/build.md +23 -0
  86. speccycle-1.0.0/src/speccycle/data/pt/commands/discovery.md +18 -0
  87. speccycle-1.0.0/src/speccycle/data/pt/commands/foundation.md +15 -0
  88. speccycle-1.0.0/src/speccycle/data/pt/commands/intent.md +18 -0
  89. speccycle-1.0.0/src/speccycle/data/pt/commands/learning.md +18 -0
  90. speccycle-1.0.0/src/speccycle/data/pt/commands/quality.md +18 -0
  91. speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.index.md +51 -0
  92. speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.mentor.md +17 -0
  93. speccycle-1.0.0/src/speccycle/data/pt/commands/scycle.new.md +14 -0
  94. speccycle-1.0.0/src/speccycle/data/pt/templates/behaviors-template.md +9 -0
  95. speccycle-1.0.0/src/speccycle/data/pt/templates/blueprint-template.md +20 -0
  96. speccycle-1.0.0/src/speccycle/data/pt/templates/breakdown-template.md +6 -0
  97. speccycle-1.0.0/src/speccycle/data/pt/templates/build-log-template.md +4 -0
  98. speccycle-1.0.0/src/speccycle/data/pt/templates/discovery-template.md +17 -0
  99. speccycle-1.0.0/src/speccycle/data/pt/templates/feature-template.feature +7 -0
  100. speccycle-1.0.0/src/speccycle/data/pt/templates/foundation-template.md +38 -0
  101. speccycle-1.0.0/src/speccycle/data/pt/templates/increment-template.md +9 -0
  102. speccycle-1.0.0/src/speccycle/data/pt/templates/intent-template.md +15 -0
  103. speccycle-1.0.0/src/speccycle/data/pt/templates/learnings-template.md +9 -0
  104. speccycle-1.0.0/src/speccycle/data/pt/templates/quality-report-template.md +12 -0
  105. speccycle-1.0.0/src/speccycle/data/pt/workflows/0-foundation.md +9 -0
  106. speccycle-1.0.0/src/speccycle/data/pt/workflows/1-discovery.md +8 -0
  107. speccycle-1.0.0/src/speccycle/data/pt/workflows/2-intent.md +6 -0
  108. speccycle-1.0.0/src/speccycle/data/pt/workflows/3-behavior.md +7 -0
  109. speccycle-1.0.0/src/speccycle/data/pt/workflows/4-blueprint.md +8 -0
  110. speccycle-1.0.0/src/speccycle/data/pt/workflows/5-breakdown.md +6 -0
  111. speccycle-1.0.0/src/speccycle/data/pt/workflows/6-build.md +6 -0
  112. speccycle-1.0.0/src/speccycle/data/pt/workflows/7-quality.md +8 -0
  113. speccycle-1.0.0/src/speccycle/data/pt/workflows/8-learning.md +6 -0
  114. speccycle-1.0.0/src/speccycle/design_cache.py +182 -0
  115. speccycle-1.0.0/src/speccycle/env_check.py +73 -0
  116. speccycle-1.0.0/src/speccycle/gates.py +755 -0
  117. speccycle-1.0.0/src/speccycle/i18n.py +908 -0
  118. speccycle-1.0.0/src/speccycle/i18n_web.py +484 -0
  119. speccycle-1.0.0/src/speccycle/orchestrator/__init__.py +8 -0
  120. speccycle-1.0.0/src/speccycle/orchestrator/antigravity_runtime.py +378 -0
  121. speccycle-1.0.0/src/speccycle/orchestrator/claude_runtime.py +222 -0
  122. speccycle-1.0.0/src/speccycle/orchestrator/github.py +327 -0
  123. speccycle-1.0.0/src/speccycle/orchestrator/runtime.py +191 -0
  124. speccycle-1.0.0/src/speccycle/paths.py +17 -0
  125. speccycle-1.0.0/src/speccycle/progress.py +203 -0
  126. speccycle-1.0.0/src/speccycle/project_config.py +44 -0
  127. speccycle-1.0.0/src/speccycle/scaffold.py +2314 -0
  128. speccycle-1.0.0/src/speccycle/server.py +1190 -0
  129. speccycle-1.0.0/src/speccycle/sessions.py +481 -0
  130. speccycle-1.0.0/src/speccycle/telemetry.py +957 -0
  131. speccycle-1.0.0/src/speccycle/web/assets/brand/favicon.svg +14 -0
  132. speccycle-1.0.0/src/speccycle/web/assets/brand/logo-dark.svg +23 -0
  133. speccycle-1.0.0/src/speccycle/web/assets/brand/logo-light.svg +23 -0
  134. speccycle-1.0.0/src/speccycle/web/assets/brand/mark-mono.svg +14 -0
  135. speccycle-1.0.0/src/speccycle/web/assets/brand/mark.svg +14 -0
  136. speccycle-1.0.0/src/speccycle/web/assets/brand/spec-cycle-logo.png +0 -0
  137. speccycle-1.0.0/src/speccycle/web/assets/brand/tokens.css +27 -0
  138. speccycle-1.0.0/src/speccycle/web/index.html +4954 -0
  139. speccycle-1.0.0/src/speccycle.egg-info/PKG-INFO +436 -0
  140. speccycle-1.0.0/src/speccycle.egg-info/SOURCES.txt +142 -0
  141. speccycle-1.0.0/src/speccycle.egg-info/dependency_links.txt +1 -0
  142. speccycle-1.0.0/src/speccycle.egg-info/entry_points.txt +2 -0
  143. speccycle-1.0.0/src/speccycle.egg-info/requires.txt +8 -0
  144. speccycle-1.0.0/src/speccycle.egg-info/top_level.txt +1 -0
@@ -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.
@@ -0,0 +1,5 @@
1
+ include LICENSE README.md pyproject.toml
2
+ graft src/speccycle
3
+ prune tests
4
+ prune docs
5
+ global-exclude __pycache__ *.py[cod] *.log .env .env.*
@@ -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.