holoctl 0.5.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 (49) hide show
  1. holoctl-0.5.0/LICENSE +21 -0
  2. holoctl-0.5.0/PKG-INFO +297 -0
  3. holoctl-0.5.0/README.md +246 -0
  4. holoctl-0.5.0/holoctl/__init__.py +5 -0
  5. holoctl-0.5.0/holoctl/__main__.py +56 -0
  6. holoctl-0.5.0/holoctl/cli/__init__.py +0 -0
  7. holoctl-0.5.0/holoctl/cli/_console.py +4 -0
  8. holoctl-0.5.0/holoctl/cli/agent.py +101 -0
  9. holoctl-0.5.0/holoctl/cli/board.py +153 -0
  10. holoctl-0.5.0/holoctl/cli/compile_.py +39 -0
  11. holoctl-0.5.0/holoctl/cli/doctor.py +126 -0
  12. holoctl-0.5.0/holoctl/cli/init_.py +108 -0
  13. holoctl-0.5.0/holoctl/cli/overview.py +165 -0
  14. holoctl-0.5.0/holoctl/cli/repo.py +116 -0
  15. holoctl-0.5.0/holoctl/cli/serve.py +20 -0
  16. holoctl-0.5.0/holoctl/cli/sync_.py +81 -0
  17. holoctl-0.5.0/holoctl/lib/__init__.py +0 -0
  18. holoctl-0.5.0/holoctl/lib/board.py +341 -0
  19. holoctl-0.5.0/holoctl/lib/compiler/__init__.py +26 -0
  20. holoctl-0.5.0/holoctl/lib/compiler/claude.py +76 -0
  21. holoctl-0.5.0/holoctl/lib/compiler/copilot.py +24 -0
  22. holoctl-0.5.0/holoctl/lib/compiler/cursor.py +38 -0
  23. holoctl-0.5.0/holoctl/lib/compiler/devin.py +51 -0
  24. holoctl-0.5.0/holoctl/lib/compiler/generic.py +51 -0
  25. holoctl-0.5.0/holoctl/lib/compiler/template.py +21 -0
  26. holoctl-0.5.0/holoctl/lib/compiler/windsurf.py +22 -0
  27. holoctl-0.5.0/holoctl/lib/config.py +102 -0
  28. holoctl-0.5.0/holoctl/lib/discover.py +94 -0
  29. holoctl-0.5.0/holoctl/lib/filetree.py +107 -0
  30. holoctl-0.5.0/holoctl/lib/git.py +41 -0
  31. holoctl-0.5.0/holoctl/lib/markdown.py +72 -0
  32. holoctl-0.5.0/holoctl/lib/templates.py +690 -0
  33. holoctl-0.5.0/holoctl/server/__init__.py +0 -0
  34. holoctl-0.5.0/holoctl/server/app.py +830 -0
  35. holoctl-0.5.0/holoctl/server/static/holoctl-ui.js +216 -0
  36. holoctl-0.5.0/holoctl/server/static/holoctl.css +1334 -0
  37. holoctl-0.5.0/holoctl/templates/commands/holoctl-claude.md +88 -0
  38. holoctl-0.5.0/holoctl/templates/commands/holoctl-copilot.prompt.md +32 -0
  39. holoctl-0.5.0/holoctl/templates/commands/holoctl-cursor.md +36 -0
  40. holoctl-0.5.0/holoctl/templates/commands/holoctl-devin.md +32 -0
  41. holoctl-0.5.0/holoctl/templates/commands/holoctl-windsurf.md +31 -0
  42. holoctl-0.5.0/holoctl.egg-info/PKG-INFO +297 -0
  43. holoctl-0.5.0/holoctl.egg-info/SOURCES.txt +47 -0
  44. holoctl-0.5.0/holoctl.egg-info/dependency_links.txt +1 -0
  45. holoctl-0.5.0/holoctl.egg-info/entry_points.txt +3 -0
  46. holoctl-0.5.0/holoctl.egg-info/requires.txt +4 -0
  47. holoctl-0.5.0/holoctl.egg-info/top_level.txt +1 -0
  48. holoctl-0.5.0/pyproject.toml +57 -0
  49. holoctl-0.5.0/setup.cfg +4 -0
holoctl-0.5.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Felipe Carillo
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
holoctl-0.5.0/PKG-INFO ADDED
@@ -0,0 +1,297 @@
1
+ Metadata-Version: 2.4
2
+ Name: holoctl
3
+ Version: 0.5.0
4
+ Summary: Universal project operating system for AI coding assistants
5
+ Author: Felipe Carillo
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 Felipe Carillo
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/FelipeCarillo/holoctl
29
+ Project-URL: Repository, https://github.com/FelipeCarillo/holoctl
30
+ Keywords: ai,project-management,kanban,claude-code,cursor,windsurf,copilot,aider,agents,cli
31
+ Classifier: Development Status :: 4 - Beta
32
+ Classifier: Intended Audience :: Developers
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Programming Language :: Python :: 3.11
36
+ Classifier: Programming Language :: Python :: 3.12
37
+ Classifier: Programming Language :: Python :: 3.13
38
+ Classifier: Topic :: Software Development
39
+ Classifier: Topic :: Software Development :: Build Tools
40
+ Classifier: Operating System :: OS Independent
41
+ Classifier: Environment :: Console
42
+ Classifier: Environment :: Web Environment
43
+ Requires-Python: >=3.11
44
+ Description-Content-Type: text/markdown
45
+ License-File: LICENSE
46
+ Requires-Dist: typer>=0.12
47
+ Requires-Dist: rich>=13
48
+ Requires-Dist: fastapi>=0.115
49
+ Requires-Dist: uvicorn>=0.30
50
+ Dynamic: license-file
51
+
52
+ # holoctl
53
+
54
+ > Universal project operating system for AI coding assistants.
55
+
56
+ <p>
57
+ <a href="./README.md"><img src="https://img.shields.io/badge/lang-English-blue?style=flat-square" alt="English"/></a>
58
+ <a href="./README.pt-br.md"><img src="https://img.shields.io/badge/lang-Português-green?style=flat-square" alt="Português"/></a>
59
+ </p>
60
+
61
+ [![PyPI version](https://img.shields.io/pypi/v/holoctl.svg)](https://pypi.org/project/holoctl/)
62
+ [![PyPI downloads](https://img.shields.io/pypi/dm/holoctl.svg)](https://pypi.org/project/holoctl/)
63
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
64
+ [![Python](https://img.shields.io/badge/python-%3E%3D3.11-brightgreen.svg)](https://www.python.org)
65
+
66
+ ---
67
+
68
+ ## What is holoctl?
69
+
70
+ **holoctl** is a CLI tool that turns any directory into a fully structured AI-ready project. It gives you a Kanban board, agent definitions, slash commands, and a live web dashboard — all version-controlled in `.holoctl/` alongside your code.
71
+
72
+ One project root. Any number of sub-repos and directories underneath. One `/holoctl` slash command to set it all up inside Claude Code.
73
+
74
+ ```
75
+ my-project/ ← project root (holoctl init here)
76
+ ├── backend/ [git · Node]
77
+ ├── frontend/ [git · React]
78
+ ├── mobile/ [git · React Native]
79
+ ├── infra/ [Terraform]
80
+ ├── .holoctl/ ← all project state lives here
81
+ │ ├── config.json
82
+ │ ├── board/
83
+ │ │ └── tickets/
84
+ │ ├── agents/
85
+ │ ├── commands/
86
+ │ └── context/
87
+ └── README.md
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Install
93
+
94
+ Recommended (handles PATH automatically):
95
+
96
+ ```bash
97
+ uv tool install holoctl
98
+ ```
99
+
100
+ Or with pip:
101
+
102
+ ```bash
103
+ pip install holoctl
104
+ ```
105
+
106
+ > **`holoctl` lives entirely inside your workspace.** It writes nothing to `$HOME` and keeps no global registry of projects. Initialize once with `holoctl init`, run `holoctl compile --target claude` to wire up the `/holoctl` slash command in that workspace's `.claude/commands/`. Repeat per workspace.
107
+
108
+ ---
109
+
110
+ ## Quick Start
111
+
112
+ ```bash
113
+ # 1. Go to your project root
114
+ cd ~/my-project
115
+
116
+ # 2. Initialize
117
+ holoctl init
118
+
119
+ # 3. Open the dashboard
120
+ holoctl serve
121
+ # → http://127.0.0.1:4242
122
+
123
+ # 4. Compile for your AI tool(s)
124
+ holoctl compile --target claude # CLAUDE.md + .claude/commands/
125
+ holoctl compile --target cursor # .cursor/commands/ + .cursor/rules/
126
+ holoctl compile --target windsurf # .windsurfrules
127
+ holoctl compile --target copilot # .github/copilot-instructions.md
128
+ holoctl compile --target devin # AGENTS.md + .devin/skills/
129
+ ```
130
+
131
+ Or just type `/holoctl` in Claude Code — it detects, initializes, and compiles automatically.
132
+
133
+ ---
134
+
135
+ ## Features
136
+
137
+ ### 📋 Kanban Board
138
+
139
+ Ticket management built for AI agents. Every ticket is a Markdown file with frontmatter — readable by humans and machines.
140
+
141
+ ```bash
142
+ holoctl board add '{"title":"Add auth flow","agent":"developer","projects":["backend"]}'
143
+ holoctl board add '{"title":"Wire SSE","agent":"developer","projects":["backend","frontend"]}'
144
+ holoctl board ls
145
+ holoctl board ls --project backend --status doing
146
+ holoctl board move PRJ-001 doing
147
+ holoctl board set PRJ-001 priority p0
148
+ holoctl board stat
149
+ ```
150
+
151
+ Tickets vincúlam a **um ou vários** projetos descobertos no workspace via o campo `projects: string[]` (substituiu o antigo `scope`).
152
+
153
+ ### 📁 Multi-Project Workspace
154
+
155
+ A workspace (the directory where you ran `holoctl init`) is auto-scanned: any direct subdirectory containing a project marker (`.git`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) appears as a project in the dashboard's **Projects** tab and on the board's project filter — no manual registration required.
156
+
157
+ ```bash
158
+ holoctl repo list # see what was discovered
159
+ holoctl repo add ./infra --name infra # optional: override / add a subdir the scan missed
160
+ holoctl repo info backend
161
+ ```
162
+
163
+ ### 🌐 Web Dashboard
164
+
165
+ ```bash
166
+ holoctl serve # http://127.0.0.1:4242 (localhost only)
167
+ holoctl serve --host 0.0.0.0 # expose on local network
168
+ ```
169
+
170
+ | Tab | Description |
171
+ |---|---|
172
+ | **Board** | Kanban view with real-time SSE updates |
173
+ | **Repos** | Git status per sub-repo: branch, last commit, remote link |
174
+ | **Files** | Full file tree with tech-stack badges |
175
+ | **Agents** | AI agent definitions |
176
+ | **Commands** | Slash commands library |
177
+ | **Context** | Project knowledge base |
178
+
179
+ **File tree badges:** Git, Node, React, Vue, React Native, Python, Go, Rust, Flutter, Docker, Terraform, iOS, Java, PHP.
180
+
181
+ ### 🤖 AI Tool Integration
182
+
183
+ `holoctl compile` translates `.holoctl/` into the native format of each AI tool:
184
+
185
+ | Tool | Slash Command | Context File |
186
+ |---|---|---|
187
+ | Claude Code | `.claude/commands/*.md` | `CLAUDE.md` |
188
+ | Cursor | `.cursor/commands/*.md` | `.cursor/rules/holoctl.md` |
189
+ | Windsurf | (n/a) | `.windsurfrules` |
190
+ | GitHub Copilot | (n/a) | `.github/copilot-instructions.md` |
191
+ | Devin CLI | `.devin/skills/*/SKILL.md` | `AGENTS.md` |
192
+
193
+ ### 🔧 No Global Setup
194
+
195
+ `holoctl` writes nothing to `$HOME` — there is no global registry of projects and no global slash-command installer. The `/holoctl` slash command is generated **per workspace** by `holoctl compile --target claude`, which writes `.claude/commands/holoctl.md` inside that workspace. Run `compile` once per workspace where you want the slash command available.
196
+
197
+ ---
198
+
199
+ ## Commands
200
+
201
+ ```
202
+ holoctl init Initialize .holoctl/ in the current workspace
203
+ holoctl overview One-screen workspace snapshot (board, projects, agents, suggested next)
204
+ holoctl board <cmd> Manage tickets (add, ls, move, set, stat, get)
205
+ holoctl repo <cmd> Inspect / override discovered subprojects
206
+ holoctl compile Compile to tool-specific files
207
+ holoctl serve Start the web dashboard
208
+ holoctl agent <cmd> Manage agent definitions
209
+ holoctl doctor Check workspace health
210
+ ```
211
+
212
+ ---
213
+
214
+ ## .holoctl/ Structure
215
+
216
+ ```
217
+ .holoctl/
218
+ ├── config.json ← project settings (name, prefix, board config, repos)
219
+ ├── activity.jsonl ← append-only event log
220
+ ├── board/
221
+ │ ├── index.json ← ticket index (auto-rebuilt from .md files)
222
+ │ └── tickets/
223
+ │ └── PRJ-001-my-ticket.md
224
+ ├── agents/
225
+ │ └── developer.md
226
+ ├── commands/
227
+ │ └── review.md
228
+ └── context/
229
+ ├── decisions/
230
+ └── documents/
231
+ ```
232
+
233
+ ---
234
+
235
+ ## Ticket Format
236
+
237
+ ```markdown
238
+ ---
239
+ id: PRJ-001
240
+ title: Add authentication
241
+ agent: developer
242
+ projects: backend, shared
243
+ status: doing
244
+ priority: p1
245
+ sprint: sprint-1
246
+ created: 2026-05-04
247
+ updated: 2026-05-04
248
+ completed: null
249
+ depends: null
250
+ tags: auth, security
251
+ ---
252
+
253
+ # Start
254
+ (Current state before starting)
255
+
256
+ # Goal — Definition of Done
257
+ - [ ] JWT auth implemented
258
+ - [ ] Tests passing
259
+
260
+ # Context
261
+ Why this ticket exists.
262
+ ```
263
+
264
+ ---
265
+
266
+ ## Configuration
267
+
268
+ ```json
269
+ {
270
+ "project": {
271
+ "name": "My Project",
272
+ "prefix": "MP",
273
+ "repos": [
274
+ { "name": "backend", "path": "./backend", "description": "Node API" },
275
+ { "name": "frontend", "path": "./frontend", "description": "React app" }
276
+ ]
277
+ },
278
+ "board": {
279
+ "statuses": ["backlog", "doing", "review", "done", "cancelled"],
280
+ "priorities": ["p0", "p1", "p2", "p3"],
281
+ "idPadding": 3
282
+ },
283
+ "targets": ["claude", "cursor"]
284
+ }
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Requirements
290
+
291
+ - Python ≥ 3.11
292
+
293
+ ---
294
+
295
+ ## License
296
+
297
+ MIT © [Felipe Carillo](https://github.com/FelipeCarillo)
@@ -0,0 +1,246 @@
1
+ # holoctl
2
+
3
+ > Universal project operating system for AI coding assistants.
4
+
5
+ <p>
6
+ <a href="./README.md"><img src="https://img.shields.io/badge/lang-English-blue?style=flat-square" alt="English"/></a>
7
+ <a href="./README.pt-br.md"><img src="https://img.shields.io/badge/lang-Português-green?style=flat-square" alt="Português"/></a>
8
+ </p>
9
+
10
+ [![PyPI version](https://img.shields.io/pypi/v/holoctl.svg)](https://pypi.org/project/holoctl/)
11
+ [![PyPI downloads](https://img.shields.io/pypi/dm/holoctl.svg)](https://pypi.org/project/holoctl/)
12
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
13
+ [![Python](https://img.shields.io/badge/python-%3E%3D3.11-brightgreen.svg)](https://www.python.org)
14
+
15
+ ---
16
+
17
+ ## What is holoctl?
18
+
19
+ **holoctl** is a CLI tool that turns any directory into a fully structured AI-ready project. It gives you a Kanban board, agent definitions, slash commands, and a live web dashboard — all version-controlled in `.holoctl/` alongside your code.
20
+
21
+ One project root. Any number of sub-repos and directories underneath. One `/holoctl` slash command to set it all up inside Claude Code.
22
+
23
+ ```
24
+ my-project/ ← project root (holoctl init here)
25
+ ├── backend/ [git · Node]
26
+ ├── frontend/ [git · React]
27
+ ├── mobile/ [git · React Native]
28
+ ├── infra/ [Terraform]
29
+ ├── .holoctl/ ← all project state lives here
30
+ │ ├── config.json
31
+ │ ├── board/
32
+ │ │ └── tickets/
33
+ │ ├── agents/
34
+ │ ├── commands/
35
+ │ └── context/
36
+ └── README.md
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Install
42
+
43
+ Recommended (handles PATH automatically):
44
+
45
+ ```bash
46
+ uv tool install holoctl
47
+ ```
48
+
49
+ Or with pip:
50
+
51
+ ```bash
52
+ pip install holoctl
53
+ ```
54
+
55
+ > **`holoctl` lives entirely inside your workspace.** It writes nothing to `$HOME` and keeps no global registry of projects. Initialize once with `holoctl init`, run `holoctl compile --target claude` to wire up the `/holoctl` slash command in that workspace's `.claude/commands/`. Repeat per workspace.
56
+
57
+ ---
58
+
59
+ ## Quick Start
60
+
61
+ ```bash
62
+ # 1. Go to your project root
63
+ cd ~/my-project
64
+
65
+ # 2. Initialize
66
+ holoctl init
67
+
68
+ # 3. Open the dashboard
69
+ holoctl serve
70
+ # → http://127.0.0.1:4242
71
+
72
+ # 4. Compile for your AI tool(s)
73
+ holoctl compile --target claude # CLAUDE.md + .claude/commands/
74
+ holoctl compile --target cursor # .cursor/commands/ + .cursor/rules/
75
+ holoctl compile --target windsurf # .windsurfrules
76
+ holoctl compile --target copilot # .github/copilot-instructions.md
77
+ holoctl compile --target devin # AGENTS.md + .devin/skills/
78
+ ```
79
+
80
+ Or just type `/holoctl` in Claude Code — it detects, initializes, and compiles automatically.
81
+
82
+ ---
83
+
84
+ ## Features
85
+
86
+ ### 📋 Kanban Board
87
+
88
+ Ticket management built for AI agents. Every ticket is a Markdown file with frontmatter — readable by humans and machines.
89
+
90
+ ```bash
91
+ holoctl board add '{"title":"Add auth flow","agent":"developer","projects":["backend"]}'
92
+ holoctl board add '{"title":"Wire SSE","agent":"developer","projects":["backend","frontend"]}'
93
+ holoctl board ls
94
+ holoctl board ls --project backend --status doing
95
+ holoctl board move PRJ-001 doing
96
+ holoctl board set PRJ-001 priority p0
97
+ holoctl board stat
98
+ ```
99
+
100
+ Tickets vincúlam a **um ou vários** projetos descobertos no workspace via o campo `projects: string[]` (substituiu o antigo `scope`).
101
+
102
+ ### 📁 Multi-Project Workspace
103
+
104
+ A workspace (the directory where you ran `holoctl init`) is auto-scanned: any direct subdirectory containing a project marker (`.git`, `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) appears as a project in the dashboard's **Projects** tab and on the board's project filter — no manual registration required.
105
+
106
+ ```bash
107
+ holoctl repo list # see what was discovered
108
+ holoctl repo add ./infra --name infra # optional: override / add a subdir the scan missed
109
+ holoctl repo info backend
110
+ ```
111
+
112
+ ### 🌐 Web Dashboard
113
+
114
+ ```bash
115
+ holoctl serve # http://127.0.0.1:4242 (localhost only)
116
+ holoctl serve --host 0.0.0.0 # expose on local network
117
+ ```
118
+
119
+ | Tab | Description |
120
+ |---|---|
121
+ | **Board** | Kanban view with real-time SSE updates |
122
+ | **Repos** | Git status per sub-repo: branch, last commit, remote link |
123
+ | **Files** | Full file tree with tech-stack badges |
124
+ | **Agents** | AI agent definitions |
125
+ | **Commands** | Slash commands library |
126
+ | **Context** | Project knowledge base |
127
+
128
+ **File tree badges:** Git, Node, React, Vue, React Native, Python, Go, Rust, Flutter, Docker, Terraform, iOS, Java, PHP.
129
+
130
+ ### 🤖 AI Tool Integration
131
+
132
+ `holoctl compile` translates `.holoctl/` into the native format of each AI tool:
133
+
134
+ | Tool | Slash Command | Context File |
135
+ |---|---|---|
136
+ | Claude Code | `.claude/commands/*.md` | `CLAUDE.md` |
137
+ | Cursor | `.cursor/commands/*.md` | `.cursor/rules/holoctl.md` |
138
+ | Windsurf | (n/a) | `.windsurfrules` |
139
+ | GitHub Copilot | (n/a) | `.github/copilot-instructions.md` |
140
+ | Devin CLI | `.devin/skills/*/SKILL.md` | `AGENTS.md` |
141
+
142
+ ### 🔧 No Global Setup
143
+
144
+ `holoctl` writes nothing to `$HOME` — there is no global registry of projects and no global slash-command installer. The `/holoctl` slash command is generated **per workspace** by `holoctl compile --target claude`, which writes `.claude/commands/holoctl.md` inside that workspace. Run `compile` once per workspace where you want the slash command available.
145
+
146
+ ---
147
+
148
+ ## Commands
149
+
150
+ ```
151
+ holoctl init Initialize .holoctl/ in the current workspace
152
+ holoctl overview One-screen workspace snapshot (board, projects, agents, suggested next)
153
+ holoctl board <cmd> Manage tickets (add, ls, move, set, stat, get)
154
+ holoctl repo <cmd> Inspect / override discovered subprojects
155
+ holoctl compile Compile to tool-specific files
156
+ holoctl serve Start the web dashboard
157
+ holoctl agent <cmd> Manage agent definitions
158
+ holoctl doctor Check workspace health
159
+ ```
160
+
161
+ ---
162
+
163
+ ## .holoctl/ Structure
164
+
165
+ ```
166
+ .holoctl/
167
+ ├── config.json ← project settings (name, prefix, board config, repos)
168
+ ├── activity.jsonl ← append-only event log
169
+ ├── board/
170
+ │ ├── index.json ← ticket index (auto-rebuilt from .md files)
171
+ │ └── tickets/
172
+ │ └── PRJ-001-my-ticket.md
173
+ ├── agents/
174
+ │ └── developer.md
175
+ ├── commands/
176
+ │ └── review.md
177
+ └── context/
178
+ ├── decisions/
179
+ └── documents/
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Ticket Format
185
+
186
+ ```markdown
187
+ ---
188
+ id: PRJ-001
189
+ title: Add authentication
190
+ agent: developer
191
+ projects: backend, shared
192
+ status: doing
193
+ priority: p1
194
+ sprint: sprint-1
195
+ created: 2026-05-04
196
+ updated: 2026-05-04
197
+ completed: null
198
+ depends: null
199
+ tags: auth, security
200
+ ---
201
+
202
+ # Start
203
+ (Current state before starting)
204
+
205
+ # Goal — Definition of Done
206
+ - [ ] JWT auth implemented
207
+ - [ ] Tests passing
208
+
209
+ # Context
210
+ Why this ticket exists.
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Configuration
216
+
217
+ ```json
218
+ {
219
+ "project": {
220
+ "name": "My Project",
221
+ "prefix": "MP",
222
+ "repos": [
223
+ { "name": "backend", "path": "./backend", "description": "Node API" },
224
+ { "name": "frontend", "path": "./frontend", "description": "React app" }
225
+ ]
226
+ },
227
+ "board": {
228
+ "statuses": ["backlog", "doing", "review", "done", "cancelled"],
229
+ "priorities": ["p0", "p1", "p2", "p3"],
230
+ "idPadding": 3
231
+ },
232
+ "targets": ["claude", "cursor"]
233
+ }
234
+ ```
235
+
236
+ ---
237
+
238
+ ## Requirements
239
+
240
+ - Python ≥ 3.11
241
+
242
+ ---
243
+
244
+ ## License
245
+
246
+ MIT © [Felipe Carillo](https://github.com/FelipeCarillo)
@@ -0,0 +1,5 @@
1
+ try:
2
+ from importlib.metadata import version
3
+ __version__ = version("holoctl")
4
+ except Exception:
5
+ __version__ = "0.3.0"
@@ -0,0 +1,56 @@
1
+ from __future__ import annotations
2
+ import sys
3
+
4
+ if sys.platform == "win32":
5
+ sys.stdout.reconfigure(encoding="utf-8", errors="replace")
6
+ sys.stderr.reconfigure(encoding="utf-8", errors="replace")
7
+
8
+ import typer
9
+
10
+ from .cli.init_ import app as _init_app, init_cmd
11
+ from .cli.board import app as _board_app
12
+ from .cli.compile_ import app as _compile_app, compile_cmd
13
+ from .cli.sync_ import app as _sync_app, sync_cmd
14
+ from .cli.doctor import app as _doctor_app, doctor_cmd
15
+ from .cli.agent import app as _agent_app
16
+ from .cli.repo import app as _repo_app
17
+ from .cli.serve import app as _serve_app, serve_cmd
18
+ from .cli.overview import app as _overview_app, overview_cmd
19
+ from . import __version__
20
+
21
+ app = typer.Typer(
22
+ name="holoctl",
23
+ help="Universal project operating system for AI coding assistants",
24
+ no_args_is_help=True,
25
+ )
26
+
27
+ # Sub-group commands
28
+ app.add_typer(_board_app, name="board", help="Manage the project board")
29
+ app.add_typer(_agent_app, name="agent", help="Manage agent definitions")
30
+ app.add_typer(_repo_app, name="repo", help="Manage repos within a project")
31
+
32
+ # Direct commands
33
+ app.command("init")(init_cmd)
34
+ app.command("compile")(compile_cmd)
35
+ app.command("sync")(sync_cmd)
36
+ app.command("doctor")(doctor_cmd)
37
+ app.command("serve")(serve_cmd)
38
+ app.command("overview")(overview_cmd)
39
+
40
+
41
+ def _version_callback(value: bool):
42
+ if value:
43
+ print(__version__)
44
+ raise typer.Exit()
45
+
46
+
47
+ @app.callback(invoke_without_command=True)
48
+ def main(
49
+ version: bool = typer.Option(None, "--version", "-v", callback=_version_callback, is_eager=True),
50
+ ctx: typer.Context = typer.Context,
51
+ ):
52
+ pass
53
+
54
+
55
+ if __name__ == "__main__":
56
+ app()
File without changes
@@ -0,0 +1,4 @@
1
+ from rich.console import Console
2
+
3
+ # Force modern Windows terminal rendering — avoids cp1252 encoding errors on legacy console.
4
+ console = Console(legacy_windows=False)