@topy-ai/maggie 0.7.43 → 0.7.45

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.
@@ -29,10 +29,10 @@ Invoke it as:
29
29
  The executable workflow is resumable:
30
30
 
31
31
  ```bash
32
- python3 tools/clis/maggie_clone.py run <homepage-url> \
32
+ maggie tool maggie_clone.py run <homepage-url> \
33
33
  --project <project-root> --run-id <stable-run-id>
34
- python3 tools/clis/maggie_clone.py status --project <project-root> --run-id <stable-run-id>
35
- python3 tools/clis/maggie_clone.py run --project <project-root> --run-id <stable-run-id>
34
+ maggie tool maggie_clone.py status --project <project-root> --run-id <stable-run-id>
35
+ maggie tool maggie_clone.py run --project <project-root> --run-id <stable-run-id>
36
36
  ```
37
37
 
38
38
  Each run persists `manifest.json`, `state.json`, and phase outputs under
@@ -111,9 +111,9 @@ editing and report the missing capability.
111
111
  2. Run:
112
112
 
113
113
  ```bash
114
- python3 tools/clis/maggie.py status <project-root>
115
- python3 tools/clis/maggie.py doctor <project-root> --require-bootstrap --strict
116
- python3 tools/clis/maggie_clone.py init <homepage-url> --project <project-root> --run-id <stable-run-id>
114
+ maggie tool maggie.py status <project-root>
115
+ maggie tool maggie.py doctor <project-root> --require-bootstrap --strict
116
+ maggie tool maggie_clone.py init <homepage-url> --project <project-root> --run-id <stable-run-id>
117
117
  ```
118
118
 
119
119
  The clone run emits collision-resistant site/page keys and creates a
@@ -147,10 +147,10 @@ shared foundation files that may change
147
147
  Inspect the target before building it. Run the executable capture first:
148
148
 
149
149
  ```bash
150
- python3 tools/clis/maggie_clone.py capture --project <project-root> --run-id <run-id>
151
- python3 tools/clis/maggie_clone.py extract --project <project-root> --run-id <run-id>
152
- python3 tools/clis/maggie_clone.py assets --project <project-root> --run-id <run-id>
153
- python3 tools/clis/maggie_design_system.py generate \
150
+ maggie tool maggie_clone.py capture --project <project-root> --run-id <run-id>
151
+ maggie tool maggie_clone.py extract --project <project-root> --run-id <run-id>
152
+ maggie tool maggie_clone.py assets --project <project-root> --run-id <run-id>
153
+ maggie tool maggie_design_system.py generate \
154
154
  --project <project-root> --sample <industry-design-reference> \
155
155
  --run-id <run-id> --output DESIGN.md
156
156
  ```
@@ -267,7 +267,7 @@ For the homepage target:
267
267
  required viewports. Use the executable comparison gate:
268
268
 
269
269
  ```bash
270
- python3 tools/clis/maggie_clone.py compare --project <project-root> --run-id <run-id> --local-url <local-or-staging-url>
270
+ maggie tool maggie_clone.py compare --project <project-root> --run-id <run-id> --local-url <local-or-staging-url>
271
271
  ```
272
272
 
273
273
  Review `visual-diff/report.json` and the generated diff images; fix measured
@@ -277,9 +277,9 @@ For the homepage target:
277
277
  5. Run the run artifact gate and then:
278
278
 
279
279
  ```bash
280
- python3 tools/clis/site_audit.py <local-or-production-url> --json
281
- python3 tools/clis/maggie.py doctor <project-root> --require-bootstrap --strict
282
- python3 tools/clis/maggie_clone.py verify --project <project-root> --run-id <run-id>
280
+ maggie tool site_audit.py <local-or-production-url> --json
281
+ maggie tool maggie.py doctor <project-root> --require-bootstrap --strict
282
+ maggie tool maggie_clone.py verify --project <project-root> --run-id <run-id>
283
283
  ```
284
284
 
285
285
  Do not claim pixel fidelity when a target asset, authenticated state, blocked
@@ -29,18 +29,18 @@ evidence.
29
29
  For deterministic execution, use the stable checkpoints:
30
30
 
31
31
  ```bash
32
- python3 tools/clis/maggie_clone_to_template.py plan <url> "<approved brief>" --rename <template-id>
33
- python3 tools/clis/maggie_clone_to_template.py clone <template-id>
34
- python3 tools/clis/maggie_clone_to_template.py package <template-id>
35
- python3 tools/clis/maggie_clone_to_template.py design-review <template-id>
36
- python3 tools/clis/maggie_clone_to_template.py validate <template-id>
32
+ maggie tool maggie_clone_to_template.py plan <url> "<approved brief>" --rename <template-id>
33
+ maggie tool maggie_clone_to_template.py clone <template-id>
34
+ maggie tool maggie_clone_to_template.py package <template-id>
35
+ maggie tool maggie_clone_to_template.py design-review <template-id>
36
+ maggie tool maggie_clone_to_template.py validate <template-id>
37
37
  ```
38
38
 
39
39
  If the brief explicitly names a target brand, run the separate Maggie Design
40
40
  rebrand checkpoint after packaging and before review:
41
41
 
42
42
  ```bash
43
- python3 tools/clis/maggie_design.py rebrand \
43
+ maggie tool maggie_design.py rebrand \
44
44
  --template marketplace/templates/<template-id> \
45
45
  --source-brand "Source Brand" --brand "Target Brand"
46
46
  ```
@@ -54,7 +54,7 @@ and the approved colour palette byte-for-byte.
54
54
  convenience orchestration command that executes the same checkpoints in order:
55
55
 
56
56
  ```bash
57
- python3 tools/clis/maggie_clone_to_template.py run <url> \
57
+ maggie tool maggie_clone_to_template.py run <url> \
58
58
  "Use a compact editorial layout, keep the existing copy, and use warm gold accents." \
59
59
  --rename <template-id> --category <category> --tag <tag>
60
60
  ```
@@ -80,15 +80,15 @@ template ID, then run the stable CLIs above. If the turn ends at any gate,
80
80
  continue with:
81
81
 
82
82
  ```bash
83
- python3 tools/clis/maggie_clone_to_template.py resume <template-id>
83
+ maggie tool maggie_clone_to_template.py resume <template-id>
84
84
  ```
85
85
 
86
86
  After applying the prompt, run the review and validation checkpoints:
87
87
 
88
88
  ```bash
89
- python3 tools/clis/maggie_clone_to_template.py review <template-id> \
89
+ maggie tool maggie_clone_to_template.py review <template-id> \
90
90
  --source-dir <source-screenshot-dir>
91
- python3 tools/clis/maggie_clone_to_template.py validate <template-id>
91
+ maggie tool maggie_clone_to_template.py validate <template-id>
92
92
  ```
93
93
 
94
94
  `review` writes `visual-review/report.json` and three current screenshots. It
@@ -123,7 +123,7 @@ fails closed unless all three source screenshots can be compared; use
123
123
  7. Run:
124
124
 
125
125
  ```bash
126
- python3 tools/clis/maggie_marketplace.py validate marketplace/templates/<id>
126
+ maggie tool maggie_marketplace.py validate marketplace/templates/<id>
127
127
  ```
128
128
 
129
129
  7. Sync only the approved metadata and previews to the public registry. Keep
@@ -67,7 +67,7 @@ Rebranding and review are separate actions. If the approved brief names a
67
67
  target brand, run the explicit rebrand command before review:
68
68
 
69
69
  ```bash
70
- python3 tools/clis/maggie_design.py rebrand \
70
+ maggie tool maggie_design.py rebrand \
71
71
  --template marketplace/templates/<id> \
72
72
  --source-brand "Source Brand" --brand "Target Brand"
73
73
  ```
@@ -79,7 +79,7 @@ validation.
79
79
  After marketplace import, call the homepage-review mode of `maggie-design`:
80
80
 
81
81
  ```bash
82
- python3 tools/clis/maggie_design.py review \
82
+ maggie tool maggie_design.py review \
83
83
  --template marketplace/templates/<id> \
84
84
  --source-dir <verified-maggie-clone-screenshot-dir>
85
85
  ```
@@ -80,24 +80,24 @@ advisory and never bypasses validation or owner/Admin approval.
80
80
  ## Stable CLI
81
81
 
82
82
  ```bash
83
- python3 tools/clis/maggie_localization.py plan \
83
+ maggie tool maggie_localization.py plan \
84
84
  --project . --content content.json --source-lang en --target-lang zh-Hans \
85
85
  --market uk --operation translate --locale zh-Hans-GB
86
- python3 tools/clis/maggie_localization.py extract --project . --source-dir src \
86
+ maggie tool maggie_localization.py extract --project . --source-dir src \
87
87
  --routes-file docs/routes.tsv --output .maggie/localization/source.json
88
- python3 tools/clis/maggie_localization.py plan --project . --content content.json \
88
+ maggie tool maggie_localization.py plan --project . --content content.json \
89
89
  --source .maggie/localization/source.json --source-lang en --target-lang zh-Hans \
90
90
  --market uk --operation translate --locale zh-Hans-GB
91
- python3 tools/clis/maggie_localization.py preview .maggie/localization/<job>.json
92
- python3 tools/clis/maggie_localization.py validate .maggie/localization/<job>.json
93
- python3 tools/clis/maggie_localization.py validate .maggie/localization/<job>.json \
91
+ maggie tool maggie_localization.py preview .maggie/localization/<job>.json
92
+ maggie tool maggie_localization.py validate .maggie/localization/<job>.json
93
+ maggie tool maggie_localization.py validate .maggie/localization/<job>.json \
94
94
  --source .maggie/localization/source.json \
95
95
  --render-report .maggie/localization/rendered.json
96
- python3 tools/clis/maggie_localization.py review .maggie/localization/<job>.json \
96
+ maggie tool maggie_localization.py review .maggie/localization/<job>.json \
97
97
  --reviewer owner@example.com --decision approve
98
- python3 tools/clis/maggie_localization.py publish .maggie/localization/<job>.json --confirm
99
- python3 tools/clis/maggie_localization.py stale --project .
100
- python3 tools/clis/maggie_localization.py glossary --project .
98
+ maggie tool maggie_localization.py publish .maggie/localization/<job>.json --confirm
99
+ maggie tool maggie_localization.py stale --project .
100
+ maggie tool maggie_localization.py glossary --project .
101
101
  ```
102
102
 
103
103
  Operations are distinct: `translate` preserves meaning, `polish` improves
@@ -136,7 +136,7 @@ configuration under `.maggie/deployment`; merely creating the directory is not
136
136
  enough:
137
137
 
138
138
  ```bash
139
- python3 tools/clis/maggie_deployment.py /path/to/project \
139
+ maggie tool maggie_deployment.py /path/to/project \
140
140
  --target cloudflare --environment staging \
141
141
  --output .maggie/deployment-preflight.json
142
142
  ```
@@ -188,7 +188,7 @@ read-only check.
188
188
  Generate a reviewable VPS plan and configuration artifacts locally:
189
189
 
190
190
  ```bash
191
- python3 tools/clis/maggie_deployment.py /path/to/project \
191
+ maggie tool maggie_deployment.py /path/to/project \
192
192
  --vps-plan --domain example.co.uk --service example \
193
193
  --release-root /var/www/example \
194
194
  --node-port 4321 \
@@ -224,7 +224,7 @@ preserve the `current` target and rollback target, and review prune candidates
224
224
  before any operator executes cleanup. Generate a read-only candidate report:
225
225
 
226
226
  ```bash
227
- python3 tools/clis/maggie_deployment.py --retention-plan \
227
+ maggie tool maggie_deployment.py --retention-plan \
228
228
  --release-root /var/www/example \
229
229
  --current-link /var/www/example/current \
230
230
  --keep-releases 2 --output .maggie/deployment/retention-plan.json
@@ -236,7 +236,7 @@ retained releases.
236
236
  Validate the database release separately before a VPS migration:
237
237
 
238
238
  ```bash
239
- python3 tools/clis/maggie_migration.py .maggie/migration-release.json \
239
+ maggie tool maggie_migration.py .maggie/migration-release.json \
240
240
  --environment staging --output .maggie/migration-preflight.json
241
241
  ```
242
242
 
@@ -288,7 +288,7 @@ Validate and materialise scheduled jobs only after their quota and lock policy
288
288
  has been reviewed:
289
289
 
290
290
  ```bash
291
- python3 tools/clis/maggie_schedule.py .maggie/schedule.json \
291
+ maggie tool maggie_schedule.py .maggie/schedule.json \
292
292
  --units-dir .maggie/deployment/schedules
293
293
  ```
294
294
 
@@ -306,7 +306,7 @@ explicit editorial approval for all launch category copy; rendered draft
306
306
  evidence is not publication approval:
307
307
 
308
308
  ```bash
309
- python3 tools/clis/maggie_release.py /path/to/project \
309
+ maggie tool maggie_release.py /path/to/project \
310
310
  --environment staging --target vps-with-cloudflare-dns \
311
311
  --base-url https://staging.example.com
312
312
  ```
@@ -328,7 +328,7 @@ Generate a repeatable VPS runner as part of the plan. A deploy step that exists
328
328
  only in an operator's shell history is not a release contract:
329
329
 
330
330
  ```bash
331
- python3 tools/clis/maggie_deployment.py /path/to/project \
331
+ maggie tool maggie_deployment.py /path/to/project \
332
332
  --vps-plan --domain example.co.uk --service example \
333
333
  --release-root /var/www/example \
334
334
  --runner-output .maggie/deployment/release-runner.sh
@@ -348,7 +348,7 @@ production-only evidence.
348
348
 
349
349
  ## Required workflow
350
350
 
351
- 1. Run `python3 tools/clis/maggie.py analyze <project> --save` and inspect the
351
+ 1. Run `maggie tool maggie.py analyze <project> --save` and inspect the
352
352
  selected framework, runtime, build/deploy commands, route inventory, data
353
353
  layer, and deployment risks.
354
354
  2. Confirm the target, domain, environment (`staging` or `production`), data
@@ -26,7 +26,7 @@ routes remain authenticated and `noindex`.
26
26
  ## Required preflight
27
27
 
28
28
  ```bash
29
- python3 tools/clis/maggie_deployment.py . \
29
+ maggie tool maggie_deployment.py . \
30
30
  --target vps-with-cloudflare-dns \
31
31
  --environment staging \
32
32
  --output .maggie/deployment-preflight.json
@@ -86,7 +86,7 @@ this pattern assumes.
86
86
  Create a local, secret-free plan before remote execution:
87
87
 
88
88
  ```bash
89
- python3 tools/clis/maggie_deployment.py . --vps-plan \
89
+ maggie tool maggie_deployment.py . --vps-plan \
90
90
  --domain example.co.uk --service example \
91
91
  --release-root /var/www/example \
92
92
  --node-port 4321 \
@@ -102,7 +102,7 @@ canonical HTTPS `allowedDomains` plus trusted `X-Forwarded-Host`/
102
102
  Use a dedicated least-privilege deployer when generating the plan:
103
103
 
104
104
  ```bash
105
- python3 tools/clis/maggie_deployment.py . --vps-plan \
105
+ maggie tool maggie_deployment.py . --vps-plan \
106
106
  --domain example.co.uk --service example --node-port 4321 \
107
107
  --deployer-user maggie-deploy
108
108
  ```
@@ -116,7 +116,7 @@ Review the generated systemd and Nginx files, then obtain explicit approval
116
116
  before installing them on a host.
117
117
 
118
118
  Database safety is a separate gate. Run
119
- `python3 tools/clis/maggie_migration.py <manifest> --environment staging`
119
+ `maggie tool maggie_migration.py <manifest> --environment staging`
120
120
  before staging migration and require a successful restore test before a
121
121
  production release. Keep the backup artifact and migration version in the
122
122
  handover record; never put a database URL or password in the manifest.
@@ -131,17 +131,17 @@ Run the complete clone workflow first. After the full target page has been
131
131
  built, compared, and verified, create the reconciliation contract:
132
132
 
133
133
  ```bash
134
- python3 tools/clis/maggie_design.py <target-url1> [<target-url2> ...] \\
134
+ maggie tool maggie_design.py <target-url1> [<target-url2> ...] \\
135
135
  --project <project-root> --clone-run <verified-clone-run-id> --save
136
136
  ```
137
137
 
138
138
  The design contract also has a resumable CLI workflow:
139
139
 
140
140
  ```bash
141
- python3 tools/clis/maggie_design.py run <target-url1> [<target-url2> ...] \
141
+ maggie tool maggie_design.py run <target-url1> [<target-url2> ...] \
142
142
  --project <project-root> --clone-run <verified-clone-run-id>
143
- python3 tools/clis/maggie_design.py status <design-job-id> --project <project-root>
144
- python3 tools/clis/maggie_design.py resume <design-job-id> --project <project-root>
143
+ maggie tool maggie_design.py status <design-job-id> --project <project-root>
144
+ maggie tool maggie_design.py resume <design-job-id> --project <project-root>
145
145
  ```
146
146
 
147
147
  The job writes `.maggie/design-jobs/<job-id>.json` and stops at `failed` when
@@ -163,7 +163,7 @@ Use in-place mode when the route already belongs to the current first-party
163
163
  project and should be redesigned without cloning an external URL:
164
164
 
165
165
  ```bash
166
- python3 tools/clis/maggie_design.py in-place \
166
+ maggie tool maggie_design.py in-place \
167
167
  --project <project-root> \
168
168
  --route /pricing \
169
169
  --route /about
@@ -291,7 +291,7 @@ The homepage `review` mode only compares screenshots. It does not rebrand a
291
291
  template. When the user explicitly requests a brand change, run:
292
292
 
293
293
  ```bash
294
- python3 tools/clis/maggie_design.py rebrand \
294
+ maggie tool maggie_design.py rebrand \
295
295
  --template marketplace/templates/<id> \
296
296
  --source-brand "Source Brand" \
297
297
  --brand "Target Brand"
@@ -310,7 +310,7 @@ with Maggie Studio.
310
310
  - Require a completed `.maggie/bootstrap-state.json` and a completed homepage
311
311
  foundation from `maggie-clone`. If either is missing, stop and request it.
312
312
  - Require a project-level `DESIGN.md` generated from the industry reference and
313
- clone evidence. Validate it with `python3 tools/clis/maggie_design_system.py
313
+ clone evidence. Validate it with `maggie tool maggie_design_system.py
314
314
  validate DESIGN.md`; if it is missing or invalid, stop before editing.
315
315
  - Reject the origin homepage as a target. Use `maggie-clone` for that job.
316
316
  - The target is initially cloned as a complete page. After that first pass,
@@ -334,9 +334,9 @@ Follow the shared [Maggie decision loop](../../references/decision-loop.md).
334
334
  Inspect before editing:
335
335
 
336
336
  ```bash
337
- python3 tools/clis/maggie.py status <project-root>
338
- python3 tools/clis/maggie.py doctor <project-root> --require-bootstrap --strict
339
- python3 tools/clis/maggie_clone.py verify --project <project-root> --run-id <verified-clone-run-id>
337
+ maggie tool maggie.py status <project-root>
338
+ maggie tool maggie.py doctor <project-root> --require-bootstrap --strict
339
+ maggie tool maggie_clone.py verify --project <project-root> --run-id <verified-clone-run-id>
340
340
  ```
341
341
 
342
342
  Read and follow the complete `maggie-clone` workflow before proceeding. The
@@ -493,8 +493,8 @@ For every target:
493
493
  the final content region to the target for page fidelity.
494
494
  4. Sweep keyboard focus, links, forms, hover, tabs/dialogs, scroll behavior,
495
495
  mobile menu, and reduced-motion behavior.
496
- 5. Run `python3 tools/clis/site_audit.py <local-or-production-url> --json`.
497
- 6. Run `python3 tools/clis/maggie_clone.py compare --project <project-root> --run-id <verified-clone-run-id> --local-url <local-or-staging-url> --force` and review the final content-region diff.
496
+ 5. Run `maggie tool site_audit.py <local-or-production-url> --json`.
497
+ 6. Run `maggie tool maggie_clone.py compare --project <project-root> --run-id <verified-clone-run-id> --local-url <local-or-staging-url> --force` and review the final content-region diff.
498
498
  7. Confirm the final DOM has exactly one header and one footer, the homepage
499
499
  shell is the imported source of truth, and no target-shell fallback remains.
500
500
 
@@ -37,18 +37,18 @@ API Pull integration, analytics, booking provider, or Maggie Ops backend.
37
37
  ## Commands
38
38
 
39
39
  ```bash
40
- python3 tools/clis/maggie_marketplace.py list
41
- python3 tools/clis/maggie_marketplace.py add \
40
+ maggie tool maggie_marketplace.py list
41
+ maggie tool maggie_marketplace.py add \
42
42
  https://www.aura.build/templates/medical-spa-landing-30 clone \
43
43
  https://medical-spa-landing-30.aura.build/ \
44
44
  --rename medical-spa-landing-001 --replace-id medical-spa-landing-30
45
- python3 tools/clis/maggie_marketplace.py import \
45
+ maggie tool maggie_marketplace.py import \
46
46
  --id medical-spa-landing-30 \
47
47
  --template-url https://www.aura.build/templates/medical-spa-landing-30 \
48
48
  --preview-url https://medical-spa-landing-30.aura.build/ \
49
49
  --category spa --category medical-spa --tags premium --tags clinical
50
- python3 tools/clis/maggie_marketplace.py validate marketplace/templates/medical-spa-landing-30
51
- python3 tools/clis/maggie_marketplace.py apply \
50
+ maggie tool maggie_marketplace.py validate marketplace/templates/medical-spa-landing-30
51
+ maggie tool maggie_marketplace.py apply \
52
52
  --id medical-spa-landing-30 --project /path/to/astro-project
53
53
  ```
54
54
 
@@ -84,8 +84,8 @@ The workflow is persisted as `.maggie/marketplace-jobs/<template-id>.json` and
84
84
  uses fail-closed checkpoints. Inspect or resume a job with:
85
85
 
86
86
  ```bash
87
- python3 tools/clis/maggie_marketplace.py status <template-id>
88
- python3 tools/clis/maggie_marketplace.py resume <template-id>
87
+ maggie tool maggie_marketplace.py status <template-id>
88
+ maggie tool maggie_marketplace.py resume <template-id>
89
89
  ```
90
90
 
91
91
  If generated assets are missing, the job stops at `WAITING_FOR_ASSETS`; cloned
@@ -114,16 +114,16 @@ or while an output image is reused across content occurrences.
114
114
  sample only when the marketplace intentionally introduces a new contract:
115
115
 
116
116
  ```bash
117
- python3 tools/clis/maggie_marketplace.py validate \
117
+ maggie tool maggie_marketplace.py validate \
118
118
  marketplace/templates/<template-id>
119
- python3 tools/clis/maggie_marketplace.py validate \
119
+ maggie tool maggie_marketplace.py validate \
120
120
  marketplace/templates/<template-id> --sample marketplace/templates/<sample-id>
121
121
  ```
122
122
 
123
123
  For a local export, pass the quoted HTML path as the preview argument:
124
124
 
125
125
  ```bash
126
- python3 tools/clis/maggie_marketplace.py add \
126
+ maggie tool maggie_marketplace.py add \
127
127
  https://www.aura.build/templates/medical-spa-landing-30 clone \
128
128
  "/path/to/Medical Aesthetics & Wellness Landing Page Template.html" \
129
129
  --rename medical-spa-landing-001 --category spa --category medical-spa \
@@ -197,7 +197,7 @@ manifest. A spinner, blank iframe, empty React root, loading skeleton, or page
197
197
  without meaningful content is a failed clone and must not be packaged.
198
198
 
199
199
  ```bash
200
- python3 tools/clis/maggie_clone.py extract \
200
+ maggie tool maggie_clone.py extract \
201
201
  "https://medical-spa-landing-30.aura.build/" \
202
202
  --run-id marketplace-medical-spa-landing-001
203
203
  ```
@@ -301,7 +301,7 @@ redesign is explicitly requested.
301
301
  ### 10. Validate and apply
302
302
 
303
303
  ```bash
304
- python3 tools/clis/maggie_marketplace.py validate \
304
+ maggie tool maggie_marketplace.py validate \
305
305
  marketplace/templates/medical-spa-landing-001
306
306
  python3 scripts/validate_skills.py
307
307
  git diff --check
@@ -38,13 +38,13 @@ Invoke it as:
38
38
  Use the deterministic control-plane CLI for lifecycle gates:
39
39
 
40
40
  ```bash
41
- python3 tools/clis/maggie_ops.py --project . audit
42
- python3 tools/clis/maggie_ops.py --project . preflight --write
43
- python3 tools/clis/maggie_ops.py --project . status
44
- python3 tools/clis/maggie_ops.py --project . verify
45
- python3 tools/clis/maggie_ops.py --project . favicon-check \
41
+ maggie tool maggie_ops.py --project . audit
42
+ maggie tool maggie_ops.py --project . preflight --write
43
+ maggie tool maggie_ops.py --project . status
44
+ maggie tool maggie_ops.py --project . verify
45
+ maggie tool maggie_ops.py --project . favicon-check \
46
46
  --origin https://example.com
47
- python3 tools/clis/maggie_ops.py --project . record sitemap-match \
47
+ maggie tool maggie_ops.py --project . record sitemap-match \
48
48
  --dry-run --quota-impact quota --idempotency-key match-2026-08-29-001
49
49
  ```
50
50
 
@@ -61,7 +61,7 @@ context. Product roles, OAuth scopes, and Cloud IAM are distinct evidence.
61
61
  For the combined API Pull lifecycle, use the repository CLI in dry-run first:
62
62
 
63
63
  ```bash
64
- python3 tools/clis/maggie.py api lifecycle --project .
64
+ maggie tool maggie.py api lifecycle --project .
65
65
  ```
66
66
 
67
67
  The executing form can pull posts/updates, inspect rewrite queue/history and
@@ -302,7 +302,7 @@ correct.
302
302
  For a deterministic technical smoke check, run:
303
303
 
304
304
  ```bash
305
- python3 tools/clis/site_audit.py https://example.com --crawl --json
305
+ maggie tool site_audit.py https://example.com --crawl --json
306
306
  ```
307
307
 
308
308
  This validates observable public output only. Strategy, AI visibility
@@ -350,7 +350,7 @@ enter the rewrite queue.
350
350
  The deterministic local orchestration entry point is:
351
351
 
352
352
  ```bash
353
- python3 tools/clis/maggie.py api lifecycle --project .
353
+ maggie tool maggie.py api lifecycle --project .
354
354
  ```
355
355
 
356
356
  Use `--execute` only after reviewing the dry-run, and add `--allow-quota` for
@@ -80,66 +80,66 @@ provider research.
80
80
  Run from the project root:
81
81
 
82
82
  ```bash
83
- python3 tools/clis/maggie_service_booking.py import \
83
+ maggie tool maggie_service_booking.py import \
84
84
  "https://www.fresha.com/a/spa-chevy-chase-chevy-chase-4500-north-park-avenue-sbic60h4?pId=512061" \
85
85
  --project .
86
86
 
87
- python3 tools/clis/maggie_service_booking.py sync \
87
+ maggie tool maggie_service_booking.py sync \
88
88
  "https://www.fresha.com/a/spa-chevy-chase-chevy-chase-4500-north-park-avenue-sbic60h4?pId=512061" \
89
89
  --project .
90
90
 
91
- python3 tools/clis/maggie_service_booking.py sync-report --project .
91
+ maggie tool maggie_service_booking.py sync-report --project .
92
92
 
93
- python3 tools/clis/maggie_service_booking.py generate --project . --copy-data docs/service-page-copy.json
94
- python3 tools/clis/maggie_service_booking.py validate --project .
93
+ maggie tool maggie_service_booking.py generate --project . --copy-data docs/service-page-copy.json
94
+ maggie tool maggie_service_booking.py validate --project .
95
95
 
96
- python3 tools/clis/maggie_service_booking.py validate-copy \
96
+ maggie tool maggie_service_booking.py validate-copy \
97
97
  --project . \
98
98
  --service-id fresha:15510886 \
99
99
  --copy-data docs/service-page-copy.json
100
100
 
101
- python3 tools/clis/maggie_service_booking.py run \
101
+ maggie tool maggie_service_booking.py run \
102
102
  "https://www.fresha.com/a/your-location" --project .
103
103
 
104
- python3 tools/clis/maggie_service_booking.py inspect --project .
105
- python3 tools/clis/maggie_service_booking.py status --project .
104
+ maggie tool maggie_service_booking.py inspect --project .
105
+ maggie tool maggie_service_booking.py status --project .
106
106
 
107
- python3 tools/clis/maggie_service_booking.py convert-page \
107
+ maggie tool maggie_service_booking.py convert-page \
108
108
  src/pages/services/scalp-ritual.astro --project .
109
109
 
110
- python3 tools/clis/maggie_service_booking.py match-pages \
110
+ maggie tool maggie_service_booking.py match-pages \
111
111
  --project . --pages-dir src/pages
112
112
 
113
113
  # Apply only reviewed matches; do not accept the first candidate automatically.
114
- python3 tools/clis/maggie_service_booking.py match-pages \
114
+ maggie tool maggie_service_booking.py match-pages \
115
115
  --project . --select 'fresha:15510886=/src/pages/lymphatic-drainage-massage-chevy-chase-md.astro'
116
116
 
117
117
  # One service may intentionally have multiple reviewed pages; repeat --select.
118
- python3 tools/clis/maggie_service_booking.py match-pages \
118
+ maggie tool maggie_service_booking.py match-pages \
119
119
  --project . \
120
120
  --select 'fresha:15510886=/src/pages/lymphatic-drainage-massage-chevy-chase-md.astro' \
121
121
  --select 'fresha:15510886=/src/pages/friendship-heights/lymphatic-drainage-massage.astro'
122
122
 
123
- python3 tools/clis/maggie_service_booking.py polish \
123
+ maggie tool maggie_service_booking.py polish \
124
124
  --project . \
125
125
  --service-id fresha:15510886 \
126
126
  --page src/pages/lymphatic-drainage-massage-chevy-chase-md.astro \
127
127
  --copy-data docs/service-page-copy.json
128
128
 
129
- python3 tools/clis/maggie_service_booking.py validate-polish \
129
+ maggie tool maggie_service_booking.py validate-polish \
130
130
  --project . --service-id fresha:15510886 \
131
131
  --page src/pages/lymphatic-drainage-massage-chevy-chase-md.astro \
132
132
  --copy-data docs/service-page-copy.json \
133
133
  --rendered http://127.0.0.1:4323/lymphatic-drainage-massage-chevy-chase-md/
134
134
 
135
- python3 tools/clis/maggie_service_booking.py category-audit \
135
+ maggie tool maggie_service_booking.py category-audit \
136
136
  --project . --rendered-dir /tmp/category-rendered
137
137
 
138
- python3 tools/clis/maggie_service_booking.py category-context --project .
138
+ maggie tool maggie_service_booking.py category-context --project .
139
139
 
140
140
  # Declare provider behavior, then validate it against the imported catalogue
141
141
  # and a sanitized fixture before publishing service pages.
142
- python3 tools/clis/maggie_service_booking.py capability-audit \
142
+ maggie tool maggie_service_booking.py capability-audit \
143
143
  --project . \
144
144
  --catalogue .maggie/booking/services.json \
145
145
  --capabilities-file .maggie/booking/provider-capabilities.json \
@@ -147,11 +147,11 @@ python3 tools/clis/maggie_service_booking.py capability-audit \
147
147
 
148
148
  # Answer whether provider-owned treatments are present using the same parser
149
149
  # as import/sync; do not search the whole provider page for a name.
150
- python3 tools/clis/maggie_service_booking.py catalogue-check \
150
+ maggie tool maggie_service_booking.py catalogue-check \
151
151
  "https://www.fresha.com/a/your-location" \
152
152
  --provider fresha --treatment "Lymphatic drainage massage"
153
153
 
154
- python3 tools/clis/maggie_service_booking.py retirement-audit \
154
+ maggie tool maggie_service_booking.py retirement-audit \
155
155
  --project . \
156
156
  --catalogue .maggie/booking/services.json \
157
157
  --evidence .maggie/booking/retirement-evidence.json
@@ -258,7 +258,7 @@ After the AI artifact is finalised, backfill only deterministic provenance
258
258
  metadata with:
259
259
 
260
260
  ```bash
261
- python3 tools/clis/maggie_service_booking.py category-hash \
261
+ maggie tool maggie_service_booking.py category-hash \
262
262
  --project . --copy-data docs/category-page-copy.json --apply
263
263
  ```
264
264
 
@@ -282,7 +282,7 @@ is `passed`.
282
282
  Run the imported-fact gate before generating service or category copy:
283
283
 
284
284
  ```bash
285
- python3 tools/clis/maggie_service_booking.py fact-audit \
285
+ maggie tool maggie_service_booking.py fact-audit \
286
286
  --project . --backfill-source
287
287
  ```
288
288
 
@@ -466,7 +466,7 @@ never let a catch-all route render an unlisted fallback page.
466
466
 
467
467
  Validate rendered sitemap output with:
468
468
 
469
- python3 tools/clis/maggie_service_booking.py sitemap-audit \
469
+ maggie tool maggie_service_booking.py sitemap-audit \
470
470
  --project . --index .maggie/rendered-sitemaps/sitemap.xml \
471
471
  --sitemap-dir .maggie/rendered-sitemaps
472
472
 
@@ -482,7 +482,7 @@ the route.
482
482
 
483
483
  Then audit the live route graph:
484
484
 
485
- python3 tools/clis/maggie_service_booking.py route-audit \
485
+ maggie tool maggie_service_booking.py route-audit \
486
486
  --project . --base-url https://example.co.uk
487
487
 
488
488
  This fetches every sitemap URL, requires HTTP 200, records internal inbound
@@ -22,9 +22,9 @@ and GEO. It is not a second content source of truth.
22
22
  Create the reviewable channel contract before generating copy:
23
23
 
24
24
  ```bash
25
- python3 tools/clis/maggie_social_share.py plan content.json \
25
+ maggie tool maggie_social_share.py plan content.json \
26
26
  --channels linkedin,facebook --output .maggie/social-share-plan.json
27
- python3 tools/clis/maggie_social_share.py validate .maggie/social-share-plan.json
27
+ maggie tool maggie_social_share.py validate .maggie/social-share-plan.json
28
28
  ```
29
29
 
30
30
  The CLI does not generate copy or publish. It validates identity, canonical