stellars-claude-code-plugins 1.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 (75) hide show
  1. stellars_claude_code_plugins-1.5.0/LICENSE +21 -0
  2. stellars_claude_code_plugins-1.5.0/PKG-INFO +380 -0
  3. stellars_claude_code_plugins-1.5.0/README.md +325 -0
  4. stellars_claude_code_plugins-1.5.0/pyproject.toml +101 -0
  5. stellars_claude_code_plugins-1.5.0/setup.cfg +4 -0
  6. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/__init__.py +3 -0
  7. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/__init__.py +27 -0
  8. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/fsm.py +256 -0
  9. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/model.py +812 -0
  10. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/orchestrator.py +3758 -0
  11. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/resources/app.yaml +379 -0
  12. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/resources/phases.yaml +1410 -0
  13. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/autobuild/resources/workflow.yaml +124 -0
  14. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/config.py +285 -0
  15. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/config_document_processing.yaml +203 -0
  16. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/__init__.py +19 -0
  17. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/calibration.py +435 -0
  18. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/chunking.py +184 -0
  19. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/cli.py +1262 -0
  20. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/consistency.py +296 -0
  21. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/entity_check.py +529 -0
  22. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/extract.py +157 -0
  23. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/extractors.py +396 -0
  24. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/grounding.py +1260 -0
  25. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/nli.py +97 -0
  26. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/ocr.py +270 -0
  27. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/semantic.py +337 -0
  28. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/settings.py +171 -0
  29. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/document_processing/validate_many.py +312 -0
  30. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/journal/__init__.py +0 -0
  31. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/journal/journal_tools.py +1261 -0
  32. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/journal/prompts/standardize.yaml +118 -0
  33. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/__init__.py +5 -0
  34. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/_svg_paths.py +497 -0
  35. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/_warning_gate.py +224 -0
  36. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/calc_boolean.py +568 -0
  37. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/calc_connector.py +4663 -0
  38. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/calc_empty_space.py +925 -0
  39. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/calc_geometry.py +1995 -0
  40. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/calc_primitives.py +2143 -0
  41. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/charts.py +529 -0
  42. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_alignment.py +970 -0
  43. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_collisions.py +129 -0
  44. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_connectors.py +606 -0
  45. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_contrast.py +1139 -0
  46. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_css.py +366 -0
  47. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_overlaps.py +1818 -0
  48. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/check_svg_valid.py +249 -0
  49. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/cli.py +209 -0
  50. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/custom_icons.py +231 -0
  51. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/drawio_shapes.py +919 -0
  52. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/finalize.py +182 -0
  53. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/gen_backgrounds.py +2542 -0
  54. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/manifest.py +826 -0
  55. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/place_icon.py +225 -0
  56. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/propose_callouts.py +1034 -0
  57. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/render_png.py +167 -0
  58. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins/svg_tools/text_to_path.py +235 -0
  59. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/PKG-INFO +380 -0
  60. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/SOURCES.txt +73 -0
  61. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/dependency_links.txt +1 -0
  62. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/entry_points.txt +6 -0
  63. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/requires.txt +43 -0
  64. stellars_claude_code_plugins-1.5.0/src/stellars_claude_code_plugins.egg-info/top_level.txt +1 -0
  65. stellars_claude_code_plugins-1.5.0/tests/test_calibration.py +223 -0
  66. stellars_claude_code_plugins-1.5.0/tests/test_calibration_cli.py +108 -0
  67. stellars_claude_code_plugins-1.5.0/tests/test_ci_imports.py +65 -0
  68. stellars_claude_code_plugins-1.5.0/tests/test_claude_cassette_realism.py +110 -0
  69. stellars_claude_code_plugins-1.5.0/tests/test_config.py +184 -0
  70. stellars_claude_code_plugins-1.5.0/tests/test_document_processing.py +1620 -0
  71. stellars_claude_code_plugins-1.5.0/tests/test_fsm.py +236 -0
  72. stellars_claude_code_plugins-1.5.0/tests/test_journal_tools.py +993 -0
  73. stellars_claude_code_plugins-1.5.0/tests/test_model.py +455 -0
  74. stellars_claude_code_plugins-1.5.0/tests/test_orchestrator.py +1589 -0
  75. stellars_claude_code_plugins-1.5.0/tests/test_svg_tools.py +6664 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Stellars Henson
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.
@@ -0,0 +1,380 @@
1
+ Metadata-Version: 2.4
2
+ Name: stellars_claude_code_plugins
3
+ Version: 1.5.0
4
+ Summary: Claude Code plugins for autonomous development workflows
5
+ Author-email: Stellars Henson <konrad.jelen@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/stellarshenson/claude-code-plugins
8
+ Project-URL: Repository, https://github.com/stellarshenson/claude-code-plugins
9
+ Project-URL: Issues, https://github.com/stellarshenson/claude-code-plugins/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.12.0
12
+ Description-Content-Type: text/markdown
13
+ License-File: LICENSE
14
+ Requires-Dist: arviz>=0.17
15
+ Requires-Dist: bambi>=0.13
16
+ Requires-Dist: beziers
17
+ Requires-Dist: fonttools
18
+ Requires-Dist: numpy
19
+ Requires-Dist: odfpy>=1.4
20
+ Requires-Dist: pandas>=2.0
21
+ Requires-Dist: pillow
22
+ Requires-Dist: playwright
23
+ Requires-Dist: pygal
24
+ Requires-Dist: pymc>=5.10
25
+ Requires-Dist: pypdf>=4.0
26
+ Requires-Dist: python-docx>=1.0
27
+ Requires-Dist: pyyaml
28
+ Requires-Dist: rank-bm25>=0.2.2
29
+ Requires-Dist: rapidfuzz>=3.14.5
30
+ Requires-Dist: scipy
31
+ Requires-Dist: shapely
32
+ Requires-Dist: striprtf>=0.0.26
33
+ Requires-Dist: svgelements>=1.9
34
+ Requires-Dist: tiktoken
35
+ Requires-Dist: transitions
36
+ Provides-Extra: dev
37
+ Requires-Dist: build; extra == "dev"
38
+ Requires-Dist: ipython; extra == "dev"
39
+ Requires-Dist: pip; extra == "dev"
40
+ Requires-Dist: pytest; extra == "dev"
41
+ Requires-Dist: pytest-cov; extra == "dev"
42
+ Requires-Dist: ruff; extra == "dev"
43
+ Requires-Dist: twine; extra == "dev"
44
+ Provides-Extra: semantic
45
+ Requires-Dist: onnxruntime>=1.17; extra == "semantic"
46
+ Requires-Dist: transformers>=4.40; extra == "semantic"
47
+ Requires-Dist: huggingface_hub>=0.23; extra == "semantic"
48
+ Requires-Dist: faiss-cpu>=1.7; extra == "semantic"
49
+ Requires-Dist: pyarrow>=14.0; extra == "semantic"
50
+ Provides-Extra: ocr
51
+ Requires-Dist: pytesseract>=0.3.10; extra == "ocr"
52
+ Requires-Dist: pdf2image>=1.17.0; extra == "ocr"
53
+ Requires-Dist: langdetect>=1.0.9; extra == "ocr"
54
+ Dynamic: license-file
55
+
56
+ # stellars-claude-code-plugins
57
+
58
+ [![GitHub Actions](https://github.com/stellarshenson/claude-code-plugins/actions/workflows/ci.yml/badge.svg)](https://github.com/stellarshenson/claude-code-plugins/actions/workflows/ci.yml)
59
+ [![PyPI version](https://img.shields.io/pypi/v/stellars-claude-code-plugins.svg)](https://pypi.org/project/stellars-claude-code-plugins/)
60
+ [![Total PyPI downloads](https://static.pepy.tech/badge/stellars-claude-code-plugins)](https://pepy.tech/project/stellars-claude-code-plugins)
61
+ [![Python 3.12](https://img.shields.io/badge/Python-3.12-blue.svg)](https://www.python.org/downloads/)
62
+
63
+ <img alt="stellars-claude-code-plugins marketplace overview - 6 plugins grouped by category" src="assets/svg/01_marketplace_overview.svg" width="100%">
64
+
65
+ ## Your AI agent will cut corners. This is the forcing function.
66
+
67
+ You ask Claude to "improve error handling." Claude says "Fixed it." Two files changed, no tests run, edge cases broken. Or it ships an SVG infographic with overlapping text and contrast failures. Or it passes a document past a reviewer who'd tear it apart.
68
+
69
+ This marketplace makes Claude work like a disciplined engineer instead. Each plugin enforces a specific discipline: research before implement, validate before ship, ground every claim, audit every iteration.
70
+
71
+ ```bash
72
+ # Force Claude through research, plan, test, review, and audit before claiming done
73
+ /autobuild:run improve error handling in the API layer
74
+
75
+ # -> writes PROGRAM.md (objective + scope)
76
+ # -> writes BENCHMARK.md (measurable score)
77
+ # -> asks for your approval
78
+ # -> implements
79
+ # -> runs tests
80
+ # -> reviews against the benchmark
81
+ # -> records evidence in YAML audit log
82
+ ```
83
+
84
+ ```bash
85
+ /plugin marketplace add stellarshenson/claude-code-plugins
86
+ /plugin install autobuild@stellarshenson-marketplace
87
+ ```
88
+
89
+ Read the long-form articles: [Your AI Agent Will Cut Corners. Here's How to Stop It](https://medium.com/@konradwitowskijele/your-ai-agent-will-cut-corners-heres-how-to-stop-it-40f3bc7a4762) and [Stop Fixing Your AI's SVGs](https://medium.com/towards-artificial-intelligence/stop-fixing-your-ai-svgs-715df70ccca0). For real examples (60+ production SVGs, 4 worked devils-advocate analyses, 3 autobuild iteration trajectories, a 1.0-CV grounding result), see [`showcase/`](showcase/).
90
+
91
+ ## The full marketplace - six disciplines
92
+
93
+ `autobuild` is the spear. The same forcing-function logic powers five more plugins, each enforcing a different kind of discipline on Claude. Install them individually or as a bundle.
94
+
95
+ | Plugin | What it solves |
96
+ |--------|---------------|
97
+ | [autobuild](autobuild/) | Executes code and artefact builds toward an objective with iterations driven by a calculated outcome benchmark - enforces structured phases with multi-agent review |
98
+ | [devils-advocate](devils-advocate/) | Produces high-quality documents for a specific audience using a scientific, measured, iterative approach - quantified critique with Fibonacci risk scoring and per-iteration residual measurement |
99
+ | [svg-infographics](svg-infographics/) | Produces high-quality standardised SVG infographics - grid-first design, theme-driven styling, dark/light mode, 5 routing modes (straight/L/L-chamfer/spline/manifold) with A* auto-routing, callout placement solver, chart generation, and 6 automated checkers |
100
+ | [datascience](datascience/) | Produces high-quality data science projects and notebooks following consistent standards - scaffolds projects from copier templates, enforces notebook structure, applies rich output styling, and supports prompt engineering techniques |
101
+ | [document-processing](document-processing/) | Processes documents according to user requests with grounding in source materials - source tracing, compliance checking, PDF automation |
102
+ | [journal](journal/) | Produces a work journal marking key changes, implementations, and decisions - append-only audit trail with continuous numbering, archiving, and deterministic `journal-tools` CLI for validation, sorting, and word-count enforcement |
103
+
104
+ ## autobuild
105
+
106
+ <img alt="autobuild 8-phase lifecycle: research, hypothesis, plan, implement, test, review, record, next" src="assets/svg/02_autobuild_phases.svg" width="100%">
107
+
108
+ Runs structured multi-iteration development cycles where each iteration passes through a full phase lifecycle with quality gates. A program defines what to build, a benchmark measures progress, and the engine enforces the workflow until the objective is met or iterations are exhausted.
109
+
110
+ - **Shallow fixes** - forces research and hypothesis before implementation
111
+ - **Scope creep** - plan locks scope, review catches deviations
112
+ - **Lost context** - hypothesis catalogue and failure context persist across iterations
113
+ - **Unchecked quality** - two independent gates (readback + gatekeeper) per phase
114
+ - **No accountability** - every phase records agents, outputs, and verdicts in YAML audit logs
115
+ - **Benchmark gaming** - guardian agent checks for benchmark-specific tuning vs genuine improvement
116
+
117
+ **Skills**: `autobuild` (orchestrator), `program-writer`, `benchmark-writer`
118
+
119
+ ### Workflow types
120
+
121
+ | Type | Phases | Use when |
122
+ |------|--------|----------|
123
+ | `full` | RESEARCH → HYPOTHESIS → PLAN → IMPLEMENT → TEST → REVIEW → RECORD → NEXT | Feature work, improvements |
124
+ | `fast` | PLAN → IMPLEMENT → TEST → REVIEW → RECORD → NEXT | Clear objective, no exploration needed |
125
+ | `gc` | PLAN → IMPLEMENT → TEST → RECORD → NEXT | Cleanup, refactoring |
126
+ | `hotfix` | IMPLEMENT → TEST → RECORD | Targeted bug fix |
127
+ | `planning` | RESEARCH → PLAN → RECORD → NEXT | Work breakdown (auto-chains before full) |
128
+
129
+ ### Usage
130
+
131
+ ```bash
132
+ # Describe what you want - the plugin handles the rest
133
+ /autobuild improve error handling in the API layer
134
+ ```
135
+
136
+ The plugin writes PROGRAM.md and BENCHMARK.md from your prompt, asks you to approve, then runs the orchestrator autonomously.
137
+
138
+ See [autobuild/README.md](autobuild/) for the full phase lifecycle, agent architecture, and configuration details.
139
+
140
+ ## devils-advocate
141
+
142
+ <img alt="devils-advocate Fibonacci risk matrix and sample concerns iterating to resolved" src="assets/svg/03_devils_advocate_scoring.svg" width="100%">
143
+
144
+ Systematically critiques documents from the perspective of their toughest audience. Builds a devil persona, harvests verifiable facts, generates a risk-scored concern catalogue, and iterates corrections until residual risk is acceptable.
145
+
146
+ **Skills**: `setup` (build persona + fact repository), `evaluate` (concern catalogue + baseline scorecard), `iterate` (apply corrections or re-score), `run` (full workflow end-to-end)
147
+
148
+ Risk scoring uses a Fibonacci scale (1-8) for likelihood and impact, producing risk scores from 1-64. Each concern is scored 0-100% on how well the document addresses it, and the residual risk (what remains unaddressed) drives iteration priority.
149
+
150
+ ### Usage
151
+
152
+ ```bash
153
+ # Full end-to-end workflow
154
+ /devils-advocate:run
155
+
156
+ # Step by step
157
+ /devils-advocate:setup # Build persona, harvest facts
158
+ /devils-advocate:evaluate # Generate concerns + baseline scorecard
159
+ /devils-advocate:iterate # Apply corrections, re-score (repeat)
160
+ ```
161
+
162
+ See [devils-advocate/README.md](devils-advocate/) for scoring formula details, artefact format, and the full concern catalogue methodology.
163
+
164
+ ## svg-infographics
165
+
166
+ <img alt="svg-infographics 6-phase workflow and 8 shipped CLI tools (validators + calculators)" src="assets/svg/04_svg_infographics_workflow.svg" width="100%">
167
+
168
+ Creates production-quality SVG infographics with a mandatory 6-phase workflow (research, grid, scaffold, content, finishing, validation). Every coordinate is Python-calculated, every colour traces to an approved theme swatch, and six validation tools check overlaps, WCAG contrast, alignment, connector quality, CSS compliance, and pairwise connector collisions before delivery.
169
+
170
+ Five connector routing modes (`straight`, `l`, `l-chamfer`, `spline`, `manifold`) with grid A* auto-routing around obstacles, container-scoped routing within specific shapes, straight-line collapse for near-aligned endpoints, and stem preservation guaranteeing clean cardinal segments behind arrowheads. Callout placement via greedy solver with leader and leaderless modes. Charts via pygal with dual light/dark palette and WCAG contrast audit.
171
+
172
+ **Boolean / margin operations** on path shapes (`boolean` calculator): headless Inkscape Path menu - `union`, `intersection`, `difference`, `xor` (Exclusion) plus one-step `buffer` (Inset / Outset), `cutout` (cut-with-margin: subtract B inflated by N units from A), and `outline` (closed annulus of width N around a shape's boundary). The cutout-with-margin and outline-as-band ops are not exposed as one-button operations by Inkscape, Illustrator, Affinity, Figma, Sketch, or CorelDRAW - bundling them as primitives is the main agentic value-add. Operates polygon-only via `shapely`; Bezier / Arc inputs flatten to polylines, with the lossy round-trip surfaced as a CURVE-FLATTENED warning through the gate. Supports `--replace-id ID` for in-place rewrite of a named element's `d=` attribute.
173
+
174
+ **Stop-and-think warning-ack gate**: every producer tool (`calc_connector`, `charts`, `drawio_shapes`, `empty-space`, `finalize`) blocks its primary output whenever any warning fires. The caller must acknowledge each warning explicitly with `--ack-warning TOKEN=reason` - one flag per warning, terse reasoning required, no bulk override. Tokens are deterministic per invocation so reruns reproduce them. Forces a conscious per-finding decision instead of letting warnings scroll past unread.
175
+
176
+ **Skills**: `svg-designer` (fork-context design agent with tool palette, 6-phase workflow, design rules, validation gates), `theme` (palette approval + swatch generation)
177
+
178
+ ### Usage
179
+
180
+ ```bash
181
+ # Create infographic(s) with full workflow
182
+ /svg-infographics:create card grid showing 4 platform modules
183
+
184
+ # Generate theme swatch for approval
185
+ /svg-infographics:theme corporate blue palette
186
+
187
+ # Run validation on existing SVGs
188
+ /svg-infographics:validate docs/images/*.svg
189
+
190
+ # Fix issues in existing SVGs (layout / style / contrast / connectors / all)
191
+ /svg-infographics:fix docs/images/overview.svg style
192
+ /svg-infographics:fix docs/images/overview.svg layout
193
+
194
+ # Additive decoration pass on existing SVGs
195
+ /svg-infographics:beautify docs/images/overview.svg medium
196
+ ```
197
+
198
+ Includes 60+ production SVG examples, 13 CLI tools (6 validators + 7 calculators including the boolean / margin ops), and theme swatches. See [svg-infographics/README.md](svg-infographics/) for the capability groups and workflow details.
199
+
200
+ ## datascience
201
+
202
+ <img alt="datascience project scaffold and notebook section pipeline (header, GPU, imports, config, data, model, eval)" src="assets/svg/05_datascience_pipeline.svg" width="100%">
203
+
204
+ Enforces data science project standards derived from production notebook workflows. Five skills auto-trigger when working with notebooks, datasets, rich output, prompts, or progress bars. Nine commands fix existing code, scaffold new projects, and apply prompt engineering techniques.
205
+
206
+ **Skills**: `datascience` (project conventions), `notebook-standards` (section order, GPU-first), `rich-output` (semantic colors), `prompt-engineering` (7 research-backed techniques), `progressbars` (tqdm/rich)
207
+
208
+ ### Usage
209
+
210
+ ```bash
211
+ # Create a new project from copier template
212
+ /datascience:new-project
213
+
214
+ # Fix an existing notebook to comply with standards
215
+ /datascience:fix-notebook notebooks/01-kj-analysis.py
216
+
217
+ # Apply rich styling fixes (wrong colors, multiple prints)
218
+ /datascience:apply-style notebooks/02-kj-train.py
219
+
220
+ # Add or fix progress bars (choose tqdm or rich)
221
+ /datascience:apply-progressbar notebooks/02-kj-train.py
222
+
223
+ # Apply prompt engineering technique (CoT, CoD, ToT, few-shot, etc.)
224
+ /datascience:apply-prompt-technique
225
+
226
+ # Full psychological prompting stack for hard problems
227
+ /datascience:challenge
228
+
229
+ # Port legacy project to copier-data-science template
230
+ /datascience:fix-project
231
+ ```
232
+
233
+ See [datascience/README.md](datascience/) for the full list of standards enforced.
234
+
235
+ ## journal
236
+
237
+ <img alt="journal append-only timeline with archive and continuous numbering" src="assets/svg/07_journal_audit.svg" width="100%">
238
+
239
+ Project journal management with append-only entry format, continuous numbering, and automatic archiving. Auto-triggers on journal-related phrases (see below) or after substantive work, maintaining a consistent audit trail in `.claude/JOURNAL.md`. Includes a deterministic `journal-tools` CLI for validation, sorting, and word-count enforcement — the three pure-string subcommands run with no generative AI in the loop, and `standardize` orchestrates a focused `claude -p` subprocess per offender to repair word-count drift on entries `check` warned on.
240
+
241
+ **Skill**: `journal` (auto-triggered by the phrases below or after finishing substantive work)
242
+
243
+ ### Auto-trigger phrases
244
+
245
+ | Command | Triggers on |
246
+ |---------|-------------|
247
+ | `/journal:update` | "update journal", "add journal entry", "add entry", "log this", "journal this", "record this in the journal" |
248
+ | `/journal:create` | "create journal", "init journal", "start journal", "new journal" (refuses if file already exists) |
249
+ | `/journal:archive` | "archive journal", "prune journal", "compact journal" (auto-suggests when >40 entries) |
250
+ | `/journal:standardize` | "standardize journal", "fix journal entry tiers", "repair journal" (run after `journal-tools check` reports word-count warnings) |
251
+
252
+ Clear split: `create` = scaffold-from-empty one-time, `update` = every write after that (append new entry or extend the last one), `archive` = runs the CLI archiver, `standardize` = ACP-driven word-count repair (oversized Standard → mark Extended or condense; oversized Extended → condense; spurious marker → drop).
253
+
254
+ ### Usage
255
+
256
+ ```bash
257
+ # Add a new entry — use this for 99% of journal writes
258
+ /journal:update added retry logic to API client
259
+
260
+ # Initialise a fresh journal (only when JOURNAL.md does not yet exist)
261
+ /journal:create backfill from this session
262
+
263
+ # Archive older entries (keeps last 20 in main, appends rest to JOURNAL_ARCHIVE.md)
264
+ /journal:archive
265
+
266
+ # Validate format, numbering, and word counts (deterministic CLI)
267
+ journal-tools check .claude/JOURNAL.md
268
+
269
+ # Re-number entries sequentially (fixes gaps or reorders)
270
+ journal-tools sort .claude/JOURNAL.md --dry-run
271
+
272
+ # Repair word-count drift via an ACP `claude -p` subprocess per offender
273
+ /journal:standardize # chains: list -> per-entry prompt -> apply decision
274
+ ```
275
+
276
+ Two word-count tiers: **Standard** (~70-120 words, the default) and **Extended** (~250-350 words, ONLY when the user explicitly asks or the work is an architectural decision / platform migration / multi-iteration debug). The checker emits warnings (not errors) when entries exceed the standard target or the extended max — length is a nudge, never a block.
277
+
278
+ See [journal/README.md](journal/) for entry format, CLI tools, and archiving rules.
279
+
280
+ ## document-processing
281
+
282
+ <img alt="document-processing 3-stage flow: sources, grounding, compliant cited output" src="assets/svg/06_document_processing_grounding.svg" width="100%">
283
+
284
+ Structured document processing with source grounding and quality control. Takes input documents through a verified workflow (analyze, draft, ground, uniformize) and produces outputs where every factual claim is traceable to source material.
285
+
286
+ **Skills** (each pairs with a same-named command): `process` (build a deliverable from sources - 4-phase workflow), `grounding` (the one verification flow - runs the CLI; single claim / one document / batch via `source_map.yaml`; no compliance), `validate` (grounding + tone/style/length/format compliance), `update` (update an existing output, with a mandatory CLI-grounding closing pass), `pdf` (toolkit - extract / merge / split / forms / OCR / batch). Grounding is delegated, not duplicated: `validate`, `process`'s verify phase, and `update`'s closing step all call the `grounding` skill.
287
+
288
+ **CLI**: ships the `document-processing` command with three-layer lexical grounding (regex + Levenshtein + BM25) plus an optional fourth semantic layer (multilingual-e5 + FAISS). Every hit returns line / column / paragraph / page / context snippet — the agent cites without rereading. **Saves tokens: measured 64-86% reduction vs batched generative grounding** on real sources. Semantic layer is opt-in via `pip install 'stellars-claude-code-plugins[semantic]'` + `document-processing setup`.
289
+
290
+ **Native source format support** (Release F+): `.txt`, `.md`, `.rst`, `.pdf` (text), `.docx`, `.odt`, `.rtf`, `.html` extracted directly via pypdf / python-docx / odfpy / striprtf. Scanned PDFs go through a deterministic fallback chain: same-stem sibling lookup (`.ocr.txt` > `.txt` > `.docx` > ...) → optional auto-OCR via `[ocr]` extras (pytesseract + pdf2image + system tesseract; agent supplies `--ocr-lang`) → vision-OCR by Claude via the Read tool with `<stem>.ocr.txt` save convention. Auto-OCR results are quality-banded (good / candidate / failed) with a deterministic stop-and-think gate that surfaces per-source warnings the agent must ack with reasoning before grounding consumes the text.
291
+
292
+ **Data-science calibrated**: the classifier was tuned via a six-iteration `autobuild` cycle with a composite benchmark score and 3-fold cross-validation on three held-out academic papers (Liu 2023, Ye 2024, Han 2024 - 14 labelled claims each). Final CV mean accuracy **1.0** with zero overfit gap. 29 tunable parameters exposed in `config.yaml`, documented per field, overridable via `.stellars-plugins/config.yaml`. Full program definition, benchmark, hypothesis + falsifiers, forensic report, CV results, and corpus data archived under [`references/grounding-optimisation/`](references/grounding-optimisation/).
293
+
294
+ ### Usage
295
+
296
+ ```bash
297
+ # Build a deliverable from input documents
298
+ /document-processing:process synthesize expert opinions into position paper
299
+
300
+ # Update existing output with new source material (re-grounds the changed content)
301
+ /document-processing:update add new hearing transcript to timeline
302
+
303
+ # Validate a document against rules and against its sources
304
+ /document-processing:validate
305
+
306
+ # Bare grounding - single claim, one document, or a batch via source_map.yaml
307
+ /document-processing:grounding
308
+
309
+ # First-run: interactive opt-in prompt for optional semantic grounding
310
+ document-processing setup
311
+
312
+ # Direct CLI: ground a single claim (all four layers when semantic enabled)
313
+ document-processing ground \
314
+ --claim "Kubernetes runs on 12 nodes" \
315
+ --source docs/source.md \
316
+ --threshold 0.85 --bm25-threshold 0.5 --semantic-threshold 0.85 --json
317
+
318
+ # Batch ground N claims from JSON, force semantic on for this call
319
+ document-processing batch-ground \
320
+ --claims validation/claims.json \
321
+ --source docs/source.md \
322
+ --output validation/grounding-report.md \
323
+ --semantic on
324
+ ```
325
+
326
+ See [document-processing/README.md](document-processing/) for the grounding methodology, folder structure, and PDF processing details.
327
+
328
+ ## Install
329
+
330
+ The library ships the deterministic CLIs that every plugin depends on — install it alongside the plugin marketplace. Without the library the skills fall back to manual work and lose all automation.
331
+
332
+ ```bash
333
+ pip install stellars-claude-code-plugins
334
+ ```
335
+
336
+ Provides these binaries:
337
+
338
+ | Binary | Used by |
339
+ |--------|---------|
340
+ | `orchestrate` | `autobuild` |
341
+ | `svg-infographics` | `svg-infographics`, `devils-advocate` (visuals) |
342
+ | `render-png` | `svg-infographics` (Playwright-based SVG → PNG) |
343
+ | `journal-tools` | `journal` (check / sort / archive / standardize) |
344
+ | `document-processing` | `document-processing` (ground / batch-ground, three-layer grounding) |
345
+
346
+ As a Claude Code plugin marketplace:
347
+
348
+ ```bash
349
+ /plugin marketplace add stellarshenson/claude-code-plugins
350
+ ```
351
+
352
+ ## Building a new plugin
353
+
354
+ Plugins are pure configuration - no Python code required. Create a directory with skills and register it in the marketplace:
355
+
356
+ ```
357
+ my-plugin/
358
+ .claude-plugin/plugin.json # Plugin registration and skill triggers
359
+ skills/
360
+ my-skill/SKILL.md # Skill definition with description and instructions
361
+ ```
362
+
363
+ The `plugin.json` registers your skills with Claude Code, defining when they trigger and what tools they have access to. Each `SKILL.md` contains the instructions Claude follows when the skill is invoked. The shared orchestration engine (`pip install stellars-claude-code-plugins`) provides the `orchestrate` CLI command that handles state management, FSM transitions, gate execution, and audit logging.
364
+
365
+ Register your plugin in the marketplace by adding an entry to `.claude-plugin/marketplace.json`.
366
+
367
+ ## Development
368
+
369
+ ```bash
370
+ make install # create venv, install deps, editable install
371
+ make test # run tests
372
+ make lint # ruff format + check
373
+ make format # auto-fix formatting
374
+ make build # clean, test, bump version, build wheel
375
+ make publish # build + twine upload to PyPI
376
+ ```
377
+
378
+ ## License
379
+
380
+ MIT License