@monoes/monomindcli 1.14.7 → 1.15.0
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.
- package/.claude/agents/reengineer-squad/boss.md +113 -0
- package/.claude/agents/reengineer-squad/critic-architect.md +132 -0
- package/.claude/agents/reengineer-squad/git-manager.md +145 -0
- package/.claude/agents/reengineer-squad/idea-generator.md +95 -0
- package/.claude/agents/reengineer-squad/implementer.md +112 -0
- package/.claude/agents/reengineer-squad/integration-planner.md +112 -0
- package/.claude/agents/reengineer-squad/source-analyst.md +103 -0
- package/.claude/agents/reengineer-squad/target-analyst.md +118 -0
- package/.claude/agents/reengineer-squad/tester.md +105 -0
- package/.claude/commands/mastermind/master.md +35 -14
- package/.claude/helpers/handlers/capture-handler.cjs +155 -18
- package/.claude/helpers/monolean-activate.cjs +20 -0
- package/.claude/helpers/monolean-config.cjs +76 -0
- package/.claude/helpers/monolean-instructions.cjs +109 -0
- package/.claude/helpers/monolean-propagate.cjs +9 -0
- package/.claude/helpers/monolean-tracker.cjs +18 -0
- package/.claude/helpers/skill-registry.json +2 -2
- package/.claude/skills/agent-browser-testing/SKILL.md +301 -18
- package/.claude/skills/mastermind/runorg.md +69 -23
- package/.claude/skills/monodesign/SKILL.md +32 -1
- package/.claude/skills/monodesign/adapt.md +53 -0
- package/.claude/skills/monodesign/agents/monodesign-asset-producer.md +100 -0
- package/.claude/skills/monodesign/animate.md +65 -0
- package/.claude/skills/monodesign/audit.md +89 -0
- package/.claude/skills/monodesign/bolder.md +50 -0
- package/.claude/skills/monodesign/clarify.md +64 -0
- package/.claude/skills/monodesign/colorize.md +68 -0
- package/.claude/skills/monodesign/craft.md +51 -0
- package/.claude/skills/monodesign/critique.md +66 -0
- package/.claude/skills/monodesign/delight.md +47 -0
- package/.claude/skills/monodesign/distill.md +56 -0
- package/.claude/skills/monodesign/document.md +80 -0
- package/.claude/skills/monodesign/extract.md +74 -0
- package/.claude/skills/monodesign/harden.md +65 -0
- package/.claude/skills/monodesign/live.md +59 -0
- package/.claude/skills/monodesign/onboard.md +50 -0
- package/.claude/skills/monodesign/optimize.md +64 -0
- package/.claude/skills/monodesign/overdrive.md +56 -0
- package/.claude/skills/monodesign/polish.md +68 -0
- package/.claude/skills/monodesign/quieter.md +57 -0
- package/.claude/skills/monodesign/reference/antipatterns-catalog.md +248 -76
- package/.claude/skills/monodesign/reference/codex.md +107 -0
- package/.claude/skills/monodesign/reference/craft.md +3 -0
- package/.claude/skills/monodesign/reference/hooks.md +99 -0
- package/.claude/skills/monodesign/reference/image-prompts.md +12 -0
- package/.claude/skills/monodesign/shape.md +71 -0
- package/.claude/skills/monodesign/teach.md +69 -0
- package/.claude/skills/monodesign/typeset.md +59 -0
- package/.claude/skills/monolean/SKILL.md +118 -0
- package/.claude/skills/monolean-audit/SKILL.md +41 -0
- package/.claude/skills/monolean-debt/SKILL.md +46 -0
- package/.claude/skills/monolean-help/SKILL.md +60 -0
- package/.claude/skills/monolean-review/SKILL.md +57 -0
- package/bin/cli.js +3 -1
- package/dist/dashboard/server.js +137 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts +2 -0
- package/dist/src/__tests__/browse-adapters.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-adapters.test.js +51 -0
- package/dist/src/__tests__/browse-adapters.test.js.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts +2 -0
- package/dist/src/__tests__/browse-analyzer.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-analyzer.test.js +68 -0
- package/dist/src/__tests__/browse-analyzer.test.js.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts +2 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js +139 -0
- package/dist/src/__tests__/browse-builtin-handlers.test.js.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts +2 -0
- package/dist/src/__tests__/browse-cdp.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-cdp.test.js +169 -0
- package/dist/src/__tests__/browse-cdp.test.js.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts +2 -0
- package/dist/src/__tests__/browse-dashboard.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-dashboard.test.js +179 -0
- package/dist/src/__tests__/browse-dashboard.test.js.map +1 -0
- package/dist/src/__tests__/browse-engine.test.d.ts +2 -0
- package/dist/src/__tests__/browse-engine.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-engine.test.js +122 -0
- package/dist/src/__tests__/browse-engine.test.js.map +1 -0
- package/dist/src/__tests__/browse-expression.test.d.ts +2 -0
- package/dist/src/__tests__/browse-expression.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-expression.test.js +54 -0
- package/dist/src/__tests__/browse-expression.test.js.map +1 -0
- package/dist/src/__tests__/browse-store.test.d.ts +2 -0
- package/dist/src/__tests__/browse-store.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-store.test.js +99 -0
- package/dist/src/__tests__/browse-store.test.js.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts +2 -0
- package/dist/src/__tests__/browse-workflow-types.test.d.ts.map +1 -0
- package/dist/src/__tests__/browse-workflow-types.test.js +33 -0
- package/dist/src/__tests__/browse-workflow-types.test.js.map +1 -0
- package/dist/src/browser/action-builder/analyzer.d.ts +11 -0
- package/dist/src/browser/action-builder/analyzer.d.ts.map +1 -0
- package/dist/src/browser/action-builder/analyzer.js +71 -0
- package/dist/src/browser/action-builder/analyzer.js.map +1 -0
- package/dist/src/browser/action-builder/types.d.ts +47 -0
- package/dist/src/browser/action-builder/types.d.ts.map +1 -0
- package/dist/src/browser/action-builder/types.js +2 -0
- package/dist/src/browser/action-builder/types.js.map +1 -0
- package/dist/src/browser/adapters/gemini.d.ts +3 -0
- package/dist/src/browser/adapters/gemini.d.ts.map +1 -0
- package/dist/src/browser/adapters/gemini.js +16 -0
- package/dist/src/browser/adapters/gemini.js.map +1 -0
- package/dist/src/browser/adapters/google.d.ts +3 -0
- package/dist/src/browser/adapters/google.d.ts.map +1 -0
- package/dist/src/browser/adapters/google.js +17 -0
- package/dist/src/browser/adapters/google.js.map +1 -0
- package/dist/src/browser/adapters/index.d.ts +19 -0
- package/dist/src/browser/adapters/index.d.ts.map +1 -0
- package/dist/src/browser/adapters/index.js +23 -0
- package/dist/src/browser/adapters/index.js.map +1 -0
- package/dist/src/browser/adapters/instagram.d.ts +3 -0
- package/dist/src/browser/adapters/instagram.d.ts.map +1 -0
- package/dist/src/browser/adapters/instagram.js +17 -0
- package/dist/src/browser/adapters/instagram.js.map +1 -0
- package/dist/src/browser/adapters/linkedin.d.ts +3 -0
- package/dist/src/browser/adapters/linkedin.d.ts.map +1 -0
- package/dist/src/browser/adapters/linkedin.js +19 -0
- package/dist/src/browser/adapters/linkedin.js.map +1 -0
- package/dist/src/browser/adapters/microsoft.d.ts +3 -0
- package/dist/src/browser/adapters/microsoft.d.ts.map +1 -0
- package/dist/src/browser/adapters/microsoft.js +16 -0
- package/dist/src/browser/adapters/microsoft.js.map +1 -0
- package/dist/src/browser/adapters/x.d.ts +3 -0
- package/dist/src/browser/adapters/x.d.ts.map +1 -0
- package/dist/src/browser/adapters/x.js +19 -0
- package/dist/src/browser/adapters/x.js.map +1 -0
- package/dist/src/browser/dashboard/api-types.d.ts +50 -0
- package/dist/src/browser/dashboard/api-types.d.ts.map +1 -0
- package/dist/src/browser/dashboard/api-types.js +14 -0
- package/dist/src/browser/dashboard/api-types.js.map +1 -0
- package/dist/src/browser/dashboard/server.d.ts +9 -0
- package/dist/src/browser/dashboard/server.d.ts.map +1 -0
- package/dist/src/browser/dashboard/server.js +62 -0
- package/dist/src/browser/dashboard/server.js.map +1 -0
- package/dist/src/browser/dashboard/ui.html +1811 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts +3 -0
- package/dist/src/browser/workflow/builtin-handlers.d.ts.map +1 -0
- package/dist/src/browser/workflow/builtin-handlers.js +343 -0
- package/dist/src/browser/workflow/builtin-handlers.js.map +1 -0
- package/dist/src/browser/workflow/engine.d.ts +15 -0
- package/dist/src/browser/workflow/engine.d.ts.map +1 -0
- package/dist/src/browser/workflow/engine.js +127 -0
- package/dist/src/browser/workflow/engine.js.map +1 -0
- package/dist/src/browser/workflow/expression.d.ts +4 -0
- package/dist/src/browser/workflow/expression.d.ts.map +1 -0
- package/dist/src/browser/workflow/expression.js +64 -0
- package/dist/src/browser/workflow/expression.js.map +1 -0
- package/dist/src/browser/workflow/store.d.ts +24 -0
- package/dist/src/browser/workflow/store.d.ts.map +1 -0
- package/dist/src/browser/workflow/store.js +145 -0
- package/dist/src/browser/workflow/store.js.map +1 -0
- package/dist/src/browser/workflow/types.d.ts +48 -0
- package/dist/src/browser/workflow/types.d.ts.map +1 -0
- package/dist/src/browser/workflow/types.js +2 -0
- package/dist/src/browser/workflow/types.js.map +1 -0
- package/dist/src/commands/browse-action.d.ts +4 -0
- package/dist/src/commands/browse-action.d.ts.map +1 -0
- package/dist/src/commands/browse-action.js +151 -0
- package/dist/src/commands/browse-action.js.map +1 -0
- package/dist/src/commands/browse-platform.d.ts +4 -0
- package/dist/src/commands/browse-platform.d.ts.map +1 -0
- package/dist/src/commands/browse-platform.js +117 -0
- package/dist/src/commands/browse-platform.js.map +1 -0
- package/dist/src/commands/browse-workflow.d.ts +4 -0
- package/dist/src/commands/browse-workflow.d.ts.map +1 -0
- package/dist/src/commands/browse-workflow.js +153 -0
- package/dist/src/commands/browse-workflow.js.map +1 -0
- package/dist/src/commands/browse.d.ts +10 -6
- package/dist/src/commands/browse.d.ts.map +1 -1
- package/dist/src/commands/browse.js +11 -2154
- package/dist/src/commands/browse.js.map +1 -1
- package/dist/src/commands/design-detect.d.ts +21 -0
- package/dist/src/commands/design-detect.d.ts.map +1 -0
- package/dist/src/commands/design-detect.js +127 -0
- package/dist/src/commands/design-detect.js.map +1 -0
- package/dist/src/commands/design-palette.d.ts +22 -0
- package/dist/src/commands/design-palette.d.ts.map +1 -0
- package/dist/src/commands/design-palette.js +539 -0
- package/dist/src/commands/design-palette.js.map +1 -0
- package/dist/src/commands/hooks-core-commands.d.ts +10 -0
- package/dist/src/commands/hooks-core-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-core-commands.js +377 -0
- package/dist/src/commands/hooks-core-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts +12 -0
- package/dist/src/commands/hooks-coverage-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-commands.js +1217 -0
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts +42 -0
- package/dist/src/commands/hooks-coverage-utils.d.ts.map +1 -0
- package/dist/src/commands/hooks-coverage-utils.js +220 -0
- package/dist/src/commands/hooks-coverage-utils.js.map +1 -0
- package/dist/src/commands/hooks-extended-commands.d.ts +14 -0
- package/dist/src/commands/hooks-extended-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-extended-commands.js +579 -0
- package/dist/src/commands/hooks-extended-commands.js.map +1 -0
- package/dist/src/commands/hooks-formatting.d.ts +13 -0
- package/dist/src/commands/hooks-formatting.d.ts.map +1 -0
- package/dist/src/commands/hooks-formatting.js +42 -0
- package/dist/src/commands/hooks-formatting.js.map +1 -0
- package/dist/src/commands/hooks-routing-commands.d.ts +15 -0
- package/dist/src/commands/hooks-routing-commands.d.ts.map +1 -0
- package/dist/src/commands/hooks-routing-commands.js +723 -0
- package/dist/src/commands/hooks-routing-commands.js.map +1 -0
- package/dist/src/commands/hooks-workers.d.ts +9 -0
- package/dist/src/commands/hooks-workers.d.ts.map +1 -0
- package/dist/src/commands/hooks-workers.js +782 -0
- package/dist/src/commands/hooks-workers.js.map +1 -0
- package/dist/src/commands/hooks.d.ts +8 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +179 -4103
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +1 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +6 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/org.d.ts.map +1 -1
- package/dist/src/commands/org.js +14 -15
- package/dist/src/commands/org.js.map +1 -1
- package/dist/src/commands/tokens.d.ts.map +1 -1
- package/dist/src/commands/tokens.js +77 -1
- package/dist/src/commands/tokens.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +18 -8
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +39 -5
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +25 -5
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/mcp-tools/browser-tools.d.ts +3 -5
- package/dist/src/mcp-tools/browser-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/browser-tools.js +619 -326
- package/dist/src/mcp-tools/browser-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-embedding.d.ts +161 -0
- package/dist/src/mcp-tools/hooks-embedding.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-embedding.js +506 -0
- package/dist/src/mcp-tools/hooks-embedding.js.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts +26 -0
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.js +1328 -0
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts +27 -0
- package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -0
- package/dist/src/mcp-tools/hooks-routing.js +1591 -0
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts +3 -38
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +5 -3393
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/monograph-tools.js +24 -14
- package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/workflow-tools.js +54 -1
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.d.ts +58 -0
- package/dist/src/memory/embedding-operations.d.ts.map +1 -0
- package/dist/src/memory/embedding-operations.js +299 -0
- package/dist/src/memory/embedding-operations.js.map +1 -0
- package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
- package/dist/src/memory/ewc-consolidation.js +37 -3
- package/dist/src/memory/ewc-consolidation.js.map +1 -1
- package/dist/src/memory/hnsw-operations.d.ts +130 -0
- package/dist/src/memory/hnsw-operations.d.ts.map +1 -0
- package/dist/src/memory/hnsw-operations.js +400 -0
- package/dist/src/memory/hnsw-operations.js.map +1 -0
- package/dist/src/memory/intelligence.d.ts.map +1 -1
- package/dist/src/memory/intelligence.js +42 -23
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +52 -8
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.d.ts +67 -0
- package/dist/src/memory/memory-crud.d.ts.map +1 -0
- package/dist/src/memory/memory-crud.js +415 -0
- package/dist/src/memory/memory-crud.js.map +1 -0
- package/dist/src/memory/memory-initializer.d.ts +9 -322
- package/dist/src/memory/memory-initializer.d.ts.map +1 -1
- package/dist/src/memory/memory-initializer.js +17 -1794
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-migrations.d.ts +30 -0
- package/dist/src/memory/memory-migrations.d.ts.map +1 -0
- package/dist/src/memory/memory-migrations.js +134 -0
- package/dist/src/memory/memory-migrations.js.map +1 -0
- package/dist/src/memory/memory-read.d.ts +78 -0
- package/dist/src/memory/memory-read.d.ts.map +1 -0
- package/dist/src/memory/memory-read.js +331 -0
- package/dist/src/memory/memory-read.js.map +1 -0
- package/dist/src/memory/memory-schema.d.ts +13 -0
- package/dist/src/memory/memory-schema.d.ts.map +1 -0
- package/dist/src/memory/memory-schema.js +167 -0
- package/dist/src/memory/memory-schema.js.map +1 -0
- package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
- package/dist/src/memory/sona-optimizer.js +37 -4
- package/dist/src/memory/sona-optimizer.js.map +1 -1
- package/dist/src/monovector/route-outcomes.d.ts.map +1 -1
- package/dist/src/monovector/route-outcomes.js +16 -6
- package/dist/src/monovector/route-outcomes.js.map +1 -1
- package/dist/src/pricing/model-pricing.d.ts +41 -0
- package/dist/src/pricing/model-pricing.d.ts.map +1 -0
- package/dist/src/pricing/model-pricing.js +61 -0
- package/dist/src/pricing/model-pricing.js.map +1 -0
- package/dist/src/ui/.monomind/capture/active-run.json +1 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.convs.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/real-events-1782290897.jsonl +11 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa/runs/rigid-qa-restart-1782288201.jsonl +540 -0
- package/dist/src/ui/.monomind/orgs/system-trial-qa-threads.jsonl +3 -0
- package/dist/src/ui/.monomind/orgs/test-event-fix/runs/rigid-qa-restart-1782288201.jsonl +2 -0
- package/dist/src/ui/MODULARIZATION_PLAN.md +79 -0
- package/dist/src/ui/collector.mjs +23 -13
- package/dist/src/ui/dashboard.html +1652 -13
- package/dist/src/ui/data/known-projects.json +1 -0
- package/dist/src/ui/data/mastermind-events.jsonl +553 -0
- package/dist/src/ui/data/sessions/_index.json +1 -0
- package/dist/src/ui/data/sessions/final-sess-001.jsonl +542 -0
- package/dist/src/ui/data/unknown-events.jsonl +1 -0
- package/dist/src/ui/orgs.html +154 -10
- package/dist/src/ui/server.mjs +1131 -168
- package/dist/src/ui/sse-manager.mjs +119 -0
- package/dist/src/update/checker.js +1 -1
- package/dist/src/update/checker.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/workflow/builtin-handlers.js +321 -0
- package/dist/workflow/engine.js +253 -0
- package/dist/workflow/expression.js +98 -0
- package/dist/workflow/types.js +2 -0
- package/package.json +8 -5
|
@@ -41,6 +41,40 @@ tools:
|
|
|
41
41
|
|
|
42
42
|
---
|
|
43
43
|
|
|
44
|
+
## Commands at a Glance
|
|
45
|
+
|
|
46
|
+
All 55 subcommands — grouped by what they do.
|
|
47
|
+
|
|
48
|
+
| Group | Commands |
|
|
49
|
+
|---|---|
|
|
50
|
+
| **Open / Navigate** | `open`, `navigate back\|forward\|reload`, `pushstate`, `connect`, `close` |
|
|
51
|
+
| **Inspect** | `snapshot`, `get url\|title\|text\|html\|value\|attr\|count\|box\|styles`, `errors`, `console` |
|
|
52
|
+
| **Find** | `find role\|text\|label\|placeholder\|testid\|alttext\|title\|selector` |
|
|
53
|
+
| **Assert** | `is visible\|enabled\|checked`, `isvisible`, `isenabled`, `ischecked` |
|
|
54
|
+
| **Click / Tap** | `click`, `dblclick`, `tap`, `hover`, `focus` |
|
|
55
|
+
| **Type / Fill** | `fill`, `type`, `keyboard type\|inserttext`, `keydown`, `keyup`, `press` |
|
|
56
|
+
| **Form** | `select`, `check`, `uncheck`, `upload` |
|
|
57
|
+
| **Scroll / Drag** | `scroll`, `scrollintoview`, `drag`, `swipe up\|down\|left\|right` |
|
|
58
|
+
| **Mouse (raw)** | `mouse move\|down\|up\|wheel` |
|
|
59
|
+
| **Wait** | `wait --text\|--not-text\|--url\|--selector\|--load\|--ms\|--fn\|--download` |
|
|
60
|
+
| **Download** | `download <ref> <path>`, `wait --download <path>` |
|
|
61
|
+
| **Screenshot / PDF** | `screenshot`, `pdf`, `highlight`, `diff url` |
|
|
62
|
+
| **Clipboard** | `clipboard read\|write\|copy\|paste` |
|
|
63
|
+
| **Dialogs** | `dialog accept\|dismiss\|status` |
|
|
64
|
+
| **Tabs** | `tab list\|new\|close\|<targetId>` |
|
|
65
|
+
| **Windows** | `window new [url]` (isolated context / incognito) |
|
|
66
|
+
| **Frames** | `frame <ref>\|main` |
|
|
67
|
+
| **Storage** | `storage local\|session`, `cookies list\|set\|clear` |
|
|
68
|
+
| **Network** | `network route\|unroute\|headers\|capture\|requests\|request` |
|
|
69
|
+
| **Emulation** | `set device\|media\|geo\|offline\|useragent\|viewport\|credentials`, `resize` |
|
|
70
|
+
| **Session** | `state save\|load\|list\|show\|clear\|rename\|clean`, `open --session\|--state` |
|
|
71
|
+
| **JS / Init** | `eval`, `eval --stdin`, `addinitscript`, `removeinitscript` |
|
|
72
|
+
| **Record** | `record start\|stop\|restart\|status` |
|
|
73
|
+
| **Performance** | `vitals`, `trace start\|stop\|status`, `profiler start\|stop\|heap`, `har start\|stop\|status` |
|
|
74
|
+
| **Batch** | `batch "cmd1" "cmd2" ...` |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
44
78
|
## QA Execution Protocol
|
|
45
79
|
|
|
46
80
|
When this skill is invoked, run ALL phases unless the user specifies a subset.
|
|
@@ -277,8 +311,10 @@ npx monomind browse find role button --name "Submit"
|
|
|
277
311
|
npx monomind browse find text "Delete" # by visible text
|
|
278
312
|
npx monomind browse find label "Email" # by label text
|
|
279
313
|
npx monomind browse find testid "submit-btn" # by data-testid
|
|
314
|
+
npx monomind browse find alttext "Company logo" # by alt attribute (images)
|
|
315
|
+
npx monomind browse find title "More options" # by title attribute (tooltips)
|
|
280
316
|
npx monomind browse find role link --nth 2 # nth match
|
|
281
|
-
npx monomind browse find role image --last
|
|
317
|
+
npx monomind browse find role image --last # last match
|
|
282
318
|
npx monomind browse find placeholder "Search..." # by placeholder text
|
|
283
319
|
npx monomind browse find selector "div.modal" # by CSS selector
|
|
284
320
|
|
|
@@ -293,6 +329,28 @@ npx monomind browse is enabled @eN
|
|
|
293
329
|
npx monomind browse is checked @eN
|
|
294
330
|
```
|
|
295
331
|
|
|
332
|
+
### Window Management (Isolated Contexts)
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
# Open a new isolated browser window (like incognito — separate cookies/storage)
|
|
336
|
+
npx monomind browse window new
|
|
337
|
+
npx monomind browse window new https://app.example.com
|
|
338
|
+
|
|
339
|
+
# Useful for multi-user testing (e.g. admin + regular user simultaneously):
|
|
340
|
+
# 1. Connect once, then open isolated windows for each user role
|
|
341
|
+
npx monomind browse connect --port 9222
|
|
342
|
+
npx monomind browse window new # switches to new isolated context
|
|
343
|
+
npx monomind browse open https://app.example.com/login
|
|
344
|
+
npx monomind browse fill @e1 "admin@example.com"
|
|
345
|
+
# ...
|
|
346
|
+
|
|
347
|
+
# Tab management (within the same context)
|
|
348
|
+
npx monomind browse tab # list all tabs
|
|
349
|
+
npx monomind browse tab new https://example.com
|
|
350
|
+
npx monomind browse tab close <tabId>
|
|
351
|
+
npx monomind browse tab <tabId> # switch to tab
|
|
352
|
+
```
|
|
353
|
+
|
|
296
354
|
### Interaction
|
|
297
355
|
|
|
298
356
|
```bash
|
|
@@ -316,11 +374,15 @@ npx monomind browse keyup "Shift"
|
|
|
316
374
|
npx monomind browse select @eN "Option A" # select dropdown option
|
|
317
375
|
npx monomind browse check @eN
|
|
318
376
|
npx monomind browse uncheck @eN
|
|
319
|
-
npx monomind browse scroll down
|
|
377
|
+
npx monomind browse scroll down 300 # positional amount (shorthand)
|
|
320
378
|
npx monomind browse scroll down --amount 600 # scroll page
|
|
379
|
+
npx monomind browse scroll down --ref eN --amount 400 # scroll within element ref
|
|
380
|
+
npx monomind browse scroll down --selector ".sidebar" 300 # scroll within CSS selector
|
|
321
381
|
npx monomind browse scrollintoview @eN
|
|
322
382
|
npx monomind browse drag @eN @eM # drag source to target
|
|
323
383
|
npx monomind browse upload @eN ./file.pdf # file input
|
|
384
|
+
npx monomind browse download @eN ./report.pdf # click element, capture file download
|
|
385
|
+
npx monomind browse download ".export-btn" ./data.csv --timeout 15000
|
|
324
386
|
npx monomind browse highlight @eN # visual debug highlight
|
|
325
387
|
```
|
|
326
388
|
|
|
@@ -356,32 +418,126 @@ npx monomind browse wait --load domcontentloaded
|
|
|
356
418
|
npx monomind browse wait --ms 500
|
|
357
419
|
npx monomind browse wait --fn "window.__ready === true"
|
|
358
420
|
npx monomind browse wait --text "Done" --timeout 10000
|
|
421
|
+
npx monomind browse wait --download ./report.pdf # wait for browser-triggered download to complete
|
|
422
|
+
npx monomind browse wait --download ./data.csv --timeout 15000
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Element State Checks (Assertions)
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
npx monomind browse isvisible @e3 # true/false — is element visible?
|
|
429
|
+
npx monomind browse isenabled @e2 # true/false — is element enabled (not disabled)?
|
|
430
|
+
npx monomind browse ischecked @e1 # true/false — is checkbox/radio checked?
|
|
431
|
+
|
|
432
|
+
# Also accepts CSS selectors
|
|
433
|
+
npx monomind browse isvisible ".submit-btn"
|
|
434
|
+
npx monomind browse isenabled "#email-input"
|
|
435
|
+
npx monomind browse ischecked "input[name='agree']"
|
|
436
|
+
|
|
437
|
+
# JSON output for scripting
|
|
438
|
+
npx monomind browse isvisible @e4 --json # → {"visible": true}
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
**Use in test scripts:**
|
|
442
|
+
```bash
|
|
443
|
+
# Run snapshot, then assert expected state
|
|
444
|
+
npx monomind browse snapshot -i
|
|
445
|
+
npx monomind browse click @e3 # click submit
|
|
446
|
+
npx monomind browse wait --text "Success"
|
|
447
|
+
npx monomind browse isvisible ".success-banner" --json
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
### Snapshot Regression Testing
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
# Save current snapshot as baseline
|
|
454
|
+
npx monomind browse snapshot -i --save ./baselines/homepage.txt
|
|
455
|
+
|
|
456
|
+
# Later: compare against baseline (colored diff: green=added, red=removed)
|
|
457
|
+
npx monomind browse snapshot -i --diff ./baselines/homepage.txt
|
|
458
|
+
# → Snapshot changed: +2 lines, -1 lines
|
|
459
|
+
# + button "Sign Out" [@e12]
|
|
460
|
+
# - button "Sign In" [@e8]
|
|
461
|
+
|
|
462
|
+
# JSON output
|
|
463
|
+
npx monomind browse snapshot -i --diff ./baselines/homepage.txt --json
|
|
464
|
+
|
|
465
|
+
# Content-safety flags (for agentic pipelines with untrusted pages)
|
|
466
|
+
npx monomind browse snapshot --content-boundaries # wrap output in sentinel markers to prevent injection
|
|
467
|
+
npx monomind browse snapshot --max-output 10000 # truncate to 10k chars (prevents context blowout)
|
|
468
|
+
npx monomind browse snapshot --content-boundaries --max-output 8000 # both together
|
|
469
|
+
|
|
470
|
+
# Compare two URLs side-by-side (navigates to each, diffs their snapshots)
|
|
471
|
+
npx monomind browse diff url https://staging.example.com https://prod.example.com
|
|
472
|
+
npx monomind browse diff url https://app.com/v1 https://app.com/v2 --interactive
|
|
473
|
+
npx monomind browse diff url https://before.com https://after.com --json
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### Mobile Testing (Touch Events)
|
|
477
|
+
|
|
478
|
+
```bash
|
|
479
|
+
# Tap with touch event — useful for mobile-emulated layouts
|
|
480
|
+
npx monomind browse tap @e4
|
|
481
|
+
npx monomind browse tap ".mobile-nav-toggle"
|
|
482
|
+
|
|
483
|
+
# Swipe gestures — 10-step smooth touchMove sequence
|
|
484
|
+
npx monomind browse swipe up # swipe up 300px from center
|
|
485
|
+
npx monomind browse swipe down 500 # swipe down 500px
|
|
486
|
+
npx monomind browse swipe left --x 300 --y 400 # swipe left from (300,400)
|
|
487
|
+
npx monomind browse swipe right 200 --x 50 --y 300 # swipe right 200px
|
|
488
|
+
|
|
489
|
+
# Combine with device emulation
|
|
490
|
+
npx monomind browse set device "iPhone 14"
|
|
491
|
+
npx monomind browse snapshot -i
|
|
492
|
+
npx monomind browse tap @e2
|
|
493
|
+
npx monomind browse swipe up 400 # scroll via swipe on mobile
|
|
359
494
|
```
|
|
360
495
|
|
|
361
496
|
### Screenshots & Visual Evidence
|
|
362
497
|
|
|
363
498
|
```bash
|
|
364
499
|
npx monomind browse screenshot before.png
|
|
365
|
-
npx monomind browse screenshot --full page.png
|
|
500
|
+
npx monomind browse screenshot --full page.png # full-page
|
|
501
|
+
npx monomind browse screenshot --annotate out.png # overlay @eN numbered labels (requires prior snapshot -i)
|
|
502
|
+
npx monomind browse screenshot --hide-scrollbars clean.png # hide native scrollbars via CSS injection
|
|
366
503
|
npx monomind browse screenshot --format webp --quality 90 out.webp
|
|
367
|
-
npx monomind browse screenshot --json
|
|
504
|
+
npx monomind browse screenshot --json # returns path as JSON
|
|
368
505
|
npx monomind browse pdf ./output.pdf
|
|
369
506
|
npx monomind browse pdf --landscape ./report.pdf
|
|
370
507
|
```
|
|
371
508
|
|
|
509
|
+
**`--annotate` pattern:** always run `snapshot -i` first to populate refs, then `screenshot --annotate` to produce a screenshot with numbered labels at each element's position. Numbers match the `@eN` refs from the snapshot, so you can point to elements by number in bug reports.
|
|
510
|
+
|
|
511
|
+
> **Note:** `--annotate` uses viewport-relative coordinates — do not combine with `--full`. On full-page captures, badges will be misaligned below the fold.
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
npx monomind browse snapshot -i
|
|
515
|
+
npx monomind browse screenshot --annotate ./issue-001.png
|
|
516
|
+
# → labels [1] [2] [3]... appear at each interactive element
|
|
517
|
+
```
|
|
518
|
+
|
|
372
519
|
### Console, Errors & JavaScript
|
|
373
520
|
|
|
521
|
+
> **Console capture is always-on.** As soon as you `open` or `connect`, monobrowse hooks `Runtime.consoleAPICalled`, `Log.entryAdded`, and `Runtime.exceptionThrown` automatically. No `capture start` needed — messages accumulate in memory and `console`/`errors` read from that buffer at any time.
|
|
522
|
+
|
|
374
523
|
```bash
|
|
375
|
-
npx monomind browse console # all
|
|
376
|
-
npx monomind browse console --
|
|
377
|
-
npx monomind browse console --
|
|
378
|
-
npx monomind browse
|
|
379
|
-
npx monomind browse errors
|
|
380
|
-
npx monomind browse errors --json
|
|
524
|
+
npx monomind browse console # all log/warn/error/info messages since connect
|
|
525
|
+
npx monomind browse console --errors-only # filter to error level only
|
|
526
|
+
npx monomind browse console --clear # reset the buffer
|
|
527
|
+
npx monomind browse console --json # machine-readable [{type, text, timestamp}]
|
|
528
|
+
npx monomind browse errors # uncaught JS exceptions (Runtime.exceptionThrown)
|
|
529
|
+
npx monomind browse errors --json # [{text, url, lineNumber, columnNumber, timestamp}]
|
|
530
|
+
npx monomind browse errors --clear
|
|
531
|
+
|
|
381
532
|
npx monomind browse eval "document.title"
|
|
382
533
|
npx monomind browse eval "document.querySelectorAll('button').length"
|
|
383
534
|
npx monomind browse eval "window.__store.getState()" --json
|
|
384
|
-
|
|
535
|
+
# Multiline JS via heredoc (--stdin reads from stdin)
|
|
536
|
+
cat <<'EOF' | npx monomind browse eval --stdin
|
|
537
|
+
const items = document.querySelectorAll('li');
|
|
538
|
+
JSON.stringify([...items].map(i => i.textContent.trim()))
|
|
539
|
+
EOF
|
|
540
|
+
npx monomind browse addinitscript "window.__TEST__ = true" # runs on every page load
|
|
385
541
|
npx monomind browse removeinitscript <id>
|
|
386
542
|
```
|
|
387
543
|
|
|
@@ -402,6 +558,11 @@ npx monomind browse network capture start
|
|
|
402
558
|
npx monomind browse network capture stop
|
|
403
559
|
npx monomind browse network capture clear
|
|
404
560
|
npx monomind browse network requests --json
|
|
561
|
+
npx monomind browse network requests --filter "api/users" # filter by URL substring
|
|
562
|
+
npx monomind browse network requests --method POST # filter by HTTP method
|
|
563
|
+
npx monomind browse network requests --status-code 200 # filter by status code
|
|
564
|
+
npx monomind browse network requests --type xhr # filter by resource type
|
|
565
|
+
npx monomind browse network request <requestId> # full detail for one request
|
|
405
566
|
npx monomind browse network cookies # cookies via network layer
|
|
406
567
|
```
|
|
407
568
|
|
|
@@ -465,12 +626,23 @@ npx monomind browse state load <name>
|
|
|
465
626
|
npx monomind browse state list
|
|
466
627
|
npx monomind browse state show # inspect current active session
|
|
467
628
|
npx monomind browse state clear # clear current active session
|
|
629
|
+
npx monomind browse state rename <old> <new> # rename a saved session
|
|
630
|
+
npx monomind browse state clean --older-than 7 # delete sessions older than N days (default: 7)
|
|
468
631
|
```
|
|
469
632
|
|
|
470
633
|
### Performance & Diagnostics
|
|
471
634
|
|
|
635
|
+
> **DevTools panel coverage:**
|
|
636
|
+
> ✅ Console panel — `console` / `errors` (always-on, see above)
|
|
637
|
+
> ✅ Network panel — `network requests` + filters, `network request <id>`, `har start/stop --bodies`
|
|
638
|
+
> ✅ Performance panel — `trace start/stop` (exports Chrome DevTools-compatible `.json`)
|
|
639
|
+
> ✅ Memory panel — `profiler heap ./heap.json` (heap snapshot)
|
|
640
|
+
> ✅ Application panel — `storage`, `cookies`
|
|
641
|
+
> ✅ Sources / JS eval — `eval`, `eval --stdin`, `addinitscript`
|
|
642
|
+
> ❌ Not available: source-map resolution for error stacks, live network waterfall, Lighthouse audit scores, Total Blocking Time metric
|
|
643
|
+
|
|
472
644
|
```bash
|
|
473
|
-
# Core Web Vitals
|
|
645
|
+
# Core Web Vitals (LCP < 2.5s PASS, 2.5–4s WARN, >4s FAIL)
|
|
474
646
|
npx monomind browse vitals --wait 3000 --json
|
|
475
647
|
|
|
476
648
|
# CPU profiler
|
|
@@ -480,11 +652,12 @@ npx monomind browse profiler stop --json
|
|
|
480
652
|
# Heap snapshot
|
|
481
653
|
npx monomind browse profiler heap ./heap.json
|
|
482
654
|
|
|
483
|
-
# Chrome trace
|
|
655
|
+
# Chrome trace (load in chrome://tracing or Perfetto)
|
|
484
656
|
npx monomind browse trace start --screenshots
|
|
485
657
|
npx monomind browse trace stop ./trace.json
|
|
658
|
+
npx monomind browse trace status
|
|
486
659
|
|
|
487
|
-
# HAR (full HTTP archive with bodies)
|
|
660
|
+
# HAR (full HTTP archive with request/response bodies)
|
|
488
661
|
npx monomind browse har start
|
|
489
662
|
npx monomind browse har status
|
|
490
663
|
npx monomind browse har stop --bodies --json # --bodies only valid on stop
|
|
@@ -493,9 +666,7 @@ npx monomind browse har stop --bodies --json # --bodies only valid on stop
|
|
|
493
666
|
npx monomind browse record start --format jpeg --quality 80
|
|
494
667
|
npx monomind browse record status
|
|
495
668
|
npx monomind browse record stop --json
|
|
496
|
-
|
|
497
|
-
# Trace status
|
|
498
|
-
npx monomind browse trace status
|
|
669
|
+
npx monomind browse record restart ./take2.mp4 # atomically stop+start (no page reload)
|
|
499
670
|
```
|
|
500
671
|
|
|
501
672
|
### Batch Execution
|
|
@@ -594,6 +765,67 @@ npx monomind browse snapshot -i # should show error state
|
|
|
594
765
|
|
|
595
766
|
---
|
|
596
767
|
|
|
768
|
+
## Dogfood / Exploratory QA Mode
|
|
769
|
+
|
|
770
|
+
When asked to "dogfood", "QA", "find bugs", "exploratory test", or "bug hunt" a web app:
|
|
771
|
+
|
|
772
|
+
### Setup
|
|
773
|
+
|
|
774
|
+
```bash
|
|
775
|
+
mkdir -p ./dogfood-output/screenshots ./dogfood-output/videos
|
|
776
|
+
```
|
|
777
|
+
|
|
778
|
+
### Workflow
|
|
779
|
+
|
|
780
|
+
```
|
|
781
|
+
1. Orient → open URL, initial annotated screenshot, snapshot -i
|
|
782
|
+
2. Explore → visit each major section, test interactive elements
|
|
783
|
+
3. Document → screenshot + record for each issue found (as you go, not at end)
|
|
784
|
+
4. Wrap up → re-check console errors, write summary
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
### At each page
|
|
788
|
+
|
|
789
|
+
```bash
|
|
790
|
+
npx monomind browse snapshot -i # find interactive elements
|
|
791
|
+
npx monomind browse screenshot --annotate ./dogfood-output/screenshots/<page>.png # annotated overview
|
|
792
|
+
npx monomind browse errors # check for JS errors
|
|
793
|
+
npx monomind browse console # check console output
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
### Documenting an issue (repro-first)
|
|
797
|
+
|
|
798
|
+
For **interactive/behavioral bugs** (require clicking or typing to reproduce):
|
|
799
|
+
|
|
800
|
+
```bash
|
|
801
|
+
# 1. Start recording before reproducing
|
|
802
|
+
npx monomind browse record start
|
|
803
|
+
# 2. Walk through the steps (use type not fill during recording — shows keystrokes)
|
|
804
|
+
npx monomind browse screenshot ./dogfood-output/screenshots/issue-001-step1.png
|
|
805
|
+
npx monomind browse type @eN "input value"
|
|
806
|
+
npx monomind browse click @eM
|
|
807
|
+
npx monomind browse screenshot --annotate ./dogfood-output/screenshots/issue-001-result.png
|
|
808
|
+
# 3. Stop recording
|
|
809
|
+
npx monomind browse record stop --json # returns path to frames JSON
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
For **static/visible-on-load bugs** (typos, layout, placeholder text):
|
|
813
|
+
|
|
814
|
+
```bash
|
|
815
|
+
npx monomind browse screenshot --annotate ./dogfood-output/screenshots/issue-001.png
|
|
816
|
+
# Single annotated screenshot is sufficient — no recording needed
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
### `type` vs `fill` during recording
|
|
820
|
+
|
|
821
|
+
Use `type` (character-by-character) when recording a video so keystrokes are visible in the recording. Use `fill` (instant clear + set) for speed outside recording.
|
|
822
|
+
|
|
823
|
+
### Reporting
|
|
824
|
+
|
|
825
|
+
Aim for 5–10 well-documented issues. Depth of evidence (annotated screenshots, step-by-step repro) beats quantity. Append each issue as you find it — never batch for the end.
|
|
826
|
+
|
|
827
|
+
---
|
|
828
|
+
|
|
597
829
|
## Task Walkthrough Mode
|
|
598
830
|
|
|
599
831
|
When helping a user accomplish a task in a live UI:
|
|
@@ -669,10 +901,61 @@ npx monomind memory search --query "login flow" --namespace ui-testing
|
|
|
669
901
|
|
|
670
902
|
---
|
|
671
903
|
|
|
904
|
+
## Electron App Automation
|
|
905
|
+
|
|
906
|
+
Automate any Electron desktop app (VS Code, Slack, Discord, Figma, Notion, Spotify) via CDP — same snapshot-interact workflow as for web pages.
|
|
907
|
+
|
|
908
|
+
### Launch with CDP port
|
|
909
|
+
|
|
910
|
+
```bash
|
|
911
|
+
# macOS — quit the app first if already running
|
|
912
|
+
open -a "Slack" --args --remote-debugging-port=9222
|
|
913
|
+
open -a "Visual Studio Code" --args --remote-debugging-port=9223
|
|
914
|
+
open -a "Discord" --args --remote-debugging-port=9224
|
|
915
|
+
open -a "Figma" --args --remote-debugging-port=9225
|
|
916
|
+
open -a "Notion" --args --remote-debugging-port=9226
|
|
917
|
+
|
|
918
|
+
# Linux
|
|
919
|
+
slack --remote-debugging-port=9222
|
|
920
|
+
code --remote-debugging-port=9223
|
|
921
|
+
|
|
922
|
+
# Windows
|
|
923
|
+
"C:\...\slack.exe" --remote-debugging-port=9222
|
|
924
|
+
```
|
|
925
|
+
|
|
926
|
+
### Connect and interact
|
|
927
|
+
|
|
928
|
+
```bash
|
|
929
|
+
# Connect to a specific port
|
|
930
|
+
npx monomind browse connect --port 9222
|
|
931
|
+
|
|
932
|
+
# Auto-discover any running Chromium-based app on ports 9222 or 9229
|
|
933
|
+
npx monomind browse connect --auto-connect
|
|
934
|
+
|
|
935
|
+
# Standard workflow from here
|
|
936
|
+
npx monomind browse snapshot -i
|
|
937
|
+
npx monomind browse click @e5
|
|
938
|
+
npx monomind browse screenshot --annotate slack-desktop.png
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
`--auto-connect` probes ports 9222 and 9229 in order and connects to the first responding Chrome/Electron instance.
|
|
942
|
+
|
|
943
|
+
### Tab and webview management
|
|
944
|
+
|
|
945
|
+
Electron apps often have multiple windows or embedded webviews:
|
|
946
|
+
|
|
947
|
+
```bash
|
|
948
|
+
npx monomind browse tab # list all tabs/webviews (shows targetId for each)
|
|
949
|
+
npx monomind browse tab <targetId> # switch to tab by its targetId
|
|
950
|
+
npx monomind browse tab new # open a new tab
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
---
|
|
954
|
+
|
|
672
955
|
## Activation Checklist
|
|
673
956
|
|
|
674
957
|
When this skill fires:
|
|
675
|
-
- [ ] Get the URL (ask if not provided)
|
|
958
|
+
- [ ] Get the URL (ask if not provided — or use `--auto-connect` for Electron apps)
|
|
676
959
|
- [ ] Run `open` + `errors` baseline
|
|
677
960
|
- [ ] Run all 7 QA phases (or subset the user requested)
|
|
678
961
|
- [ ] Screenshot key states: initial, post-action, errors, mobile
|
|
@@ -113,7 +113,8 @@ curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
|
|
|
113
113
|
--arg org "$orgName" \
|
|
114
114
|
--arg goal "$goal" \
|
|
115
115
|
--arg proj "$REPO_ROOT" \
|
|
116
|
-
|
|
116
|
+
--argjson ci "${CHECKPOINT_INTERVAL_MS:-600000}" \
|
|
117
|
+
'{type:"org:start",session:$session,org:$org,goal:$goal,project:$proj,checkpointInterval:$ci,ts:(now*1000|floor)}')" || true
|
|
117
118
|
```
|
|
118
119
|
|
|
119
120
|
### 1.6.4 — Execute first iteration inline
|
|
@@ -147,12 +148,22 @@ If `LOOP_STATUS == "active"` or `LOOP_STATUS == "paused"`:
|
|
|
147
148
|
LOOP_PROMPT=$(cat "$run_prompt_file")
|
|
148
149
|
```
|
|
149
150
|
|
|
150
|
-
2.
|
|
151
|
+
2. Emit `org:stop` to signal this iteration is pausing:
|
|
152
|
+
```bash
|
|
153
|
+
curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
|
|
154
|
+
-H "Content-Type: application/json" \
|
|
155
|
+
-d "$(jq -cn \
|
|
156
|
+
--arg org "$orgName" \
|
|
157
|
+
--arg runId "run-$(date -u +%Y%m%dT%H%M%S)" \
|
|
158
|
+
'{type:"org:stop",org:$org,runId:$runId,ts:(now*1000|floor),reason:"scheduled-iteration-complete"}')" || true
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
3. Call `ScheduleWakeup` with:
|
|
151
162
|
- `delaySeconds`: `$poll_interval_seconds`
|
|
152
163
|
- `reason`: `"<orgName>: next scheduled poll (every <poll_interval_minutes> min)"`
|
|
153
164
|
- `prompt`: full contents of `$LOOP_PROMPT`
|
|
154
165
|
|
|
155
|
-
|
|
166
|
+
4. Update `next_run` in org JSON:
|
|
156
167
|
```bash
|
|
157
168
|
next_ts=$(( $(date +%s) + poll_interval_seconds ))
|
|
158
169
|
next_iso=$(date -u -r "$next_ts" +%Y-%m-%dT%H:%M:%SZ 2>/dev/null \
|
|
@@ -305,33 +316,37 @@ jq -cn \
|
|
|
305
316
|
'{type:"run:start",runId:$runId,org:$org,orgName:$org,goal:$goal,bossRole:$bossRole,project:$proj,ts:(now*1000|floor)}' \
|
|
306
317
|
>> "$runFile"
|
|
307
318
|
|
|
308
|
-
#
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
After the combined Step 2+3 script runs, emit `org:start` using the values printed by `ORG_VARS:`. Replace each `<X>` with the literal value from that line:
|
|
319
|
+
# Emit session:start first — creates the chat tab session record and writes active-session.json
|
|
320
|
+
# so capture-handler can tag all subsequent agent:spawn / agent:complete events with this session
|
|
321
|
+
curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
|
|
322
|
+
-H "Content-Type: application/json" \
|
|
323
|
+
-d "$(jq -cn \
|
|
324
|
+
--arg session "$sessionId" \
|
|
325
|
+
--arg org "$orgName" \
|
|
326
|
+
--arg prompt "$goal" \
|
|
327
|
+
'{type:"session:start",session:$session,org:$org,prompt:$prompt,ts:(now*1000|floor)}')" || true
|
|
319
328
|
|
|
320
|
-
|
|
321
|
-
curl -s -X POST "
|
|
329
|
+
# Emit org:start — must run here while CTRL_URL/runId/orgName are in scope
|
|
330
|
+
curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
|
|
322
331
|
-H "Content-Type: application/json" \
|
|
323
332
|
-d "$(jq -cn \
|
|
324
|
-
--arg session "
|
|
325
|
-
--arg org "
|
|
326
|
-
--arg runId "
|
|
327
|
-
--arg goal "
|
|
328
|
-
--arg proj "
|
|
329
|
-
|
|
333
|
+
--arg session "$sessionId" \
|
|
334
|
+
--arg org "$orgName" \
|
|
335
|
+
--arg runId "$runId" \
|
|
336
|
+
--arg goal "$goal" \
|
|
337
|
+
--arg proj "$REPO_ROOT" \
|
|
338
|
+
--argjson ci "${CHECKPOINT_INTERVAL_MS:-600000}" \
|
|
339
|
+
'{type:"org:start",session:$session,org:$org,runId:$runId,goal:$goal,project:$proj,checkpointInterval:$ci,ts:(now*1000|floor)}')" || true
|
|
340
|
+
|
|
341
|
+
# Print resolved values so Step 3 can embed them in the boss prompt
|
|
342
|
+
echo "ORG_VARS: orgName=${orgName} runId=${runId} sessionId=${sessionId} goal=${goal} bossRole_id=${bossRole_id} bossRole_title=${bossRole_title} bossRole_agent_type=${bossRole_agent_type} board_id=${board_id} todo_col=${todo_col} doing_col=${doing_col} done_col=${done_col} checkpointMin=${checkpointMin} memNs=${memNs} CTRL_URL=${CTRL_URL} MONO_DIR=${MONO_DIR} runFile=${runFile} REPO_ROOT=${REPO_ROOT}"
|
|
330
343
|
```
|
|
331
344
|
|
|
345
|
+
After running the script above, read the `ORG_VARS:` line from its output and hold those values for Step 3 (embed them into the boss prompt as literals — **do not re-run bash to look them up**).
|
|
346
|
+
|
|
332
347
|
---
|
|
333
348
|
|
|
334
|
-
## Step
|
|
349
|
+
## Step 3 — Spawn Boss Agent
|
|
335
350
|
|
|
336
351
|
Using the literal values from the `ORG_VARS:` output (not shell variables — they don't persist), spawn the boss agent via Task tool:
|
|
337
352
|
|
|
@@ -508,6 +523,11 @@ OPERATING LOOP:
|
|
|
508
523
|
-d "$(jq -cn --arg s "${sessionId}" --arg o "${orgName}" --arg rid "${runId}" \
|
|
509
524
|
--arg from "<role_id>" --arg msg "Completed: <one-sentence summary of output>" \
|
|
510
525
|
'{type:"org:comms",session:$s,org:$o,runId:$rid,from:$from,to:"boss",msg:$msg,ts:(now*1000|floor)}')" || true
|
|
526
|
+
# When your task is fully complete — signal offline:
|
|
527
|
+
curl -s -X POST "${CTRL_URL}/api/mastermind/event" -H "Content-Type: application/json" \
|
|
528
|
+
-d "$(jq -cn --arg s "${sessionId}" --arg o "${orgName}" --arg rid "${runId}" \
|
|
529
|
+
--arg from "<role_id>" \
|
|
530
|
+
'{type:"org:agent:offline",session:$s,org:$o,runId:$rid,from:$from,ts:(now*1000|floor)}')" || true
|
|
511
531
|
# TOKEN TRACKING — estimate and persist token usage to state.json for the Budgets dashboard:
|
|
512
532
|
# Count approximate output tokens from your work (1 word ≈ 1.3 tokens):
|
|
513
533
|
_tok_out=$(echo -n "<paste a representative sample of your final output here>" | wc -w)
|
|
@@ -636,3 +656,29 @@ run_id: "<runId>"
|
|
|
636
656
|
## Step 8 — Brain Write (standalone only)
|
|
637
657
|
|
|
638
658
|
If `caller` is not "command", follow _protocol.md Brain Write Procedure for domain `ops`.
|
|
659
|
+
|
|
660
|
+
---
|
|
661
|
+
|
|
662
|
+
## Reporting Artifacts (optional)
|
|
663
|
+
|
|
664
|
+
When you create or modify a file that represents output of this org run, emit:
|
|
665
|
+
|
|
666
|
+
```bash
|
|
667
|
+
curl -s -X POST "${CTRL_URL}/api/mastermind/event" \
|
|
668
|
+
-H "Content-Type: application/json" \
|
|
669
|
+
-d "$(jq -cn \
|
|
670
|
+
--arg s "${sessionId}" \
|
|
671
|
+
--arg o "${orgName}" \
|
|
672
|
+
--arg rid "${runId}" \
|
|
673
|
+
--arg from "${AGENT_ROLE}" \
|
|
674
|
+
--arg label "Short description" \
|
|
675
|
+
--arg path "${FILE_PATH}" \
|
|
676
|
+
--arg mime "text/markdown" \
|
|
677
|
+
'{type:"org:artifact",session:$s,org:$o,runId:$rid,from:$from,artifact:{label:$label,type:"file",path:$path,mimeType:$mime},ts:(now*1000|floor)}')" || true
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
The dashboard chat will show this as an artifact card with a "View" button. Fill in:
|
|
681
|
+
- `${AGENT_ROLE}` — the literal role id of the agent emitting the artifact
|
|
682
|
+
- `${FILE_PATH}` — the absolute or repo-relative path to the created/modified file
|
|
683
|
+
- `label` — a short human-readable description (e.g., "Weekly report", "Analysis output")
|
|
684
|
+
- `mimeType` — `text/markdown`, `application/json`, `text/plain`, etc.
|
|
@@ -160,13 +160,18 @@ If someone could look at this interface and say "AI made that" without doubt, it
|
|
|
160
160
|
|
|
161
161
|
## Antipattern Detection
|
|
162
162
|
|
|
163
|
-
Before finalizing any design, run the antipattern detector. It checks for
|
|
163
|
+
Before finalizing any design, run the antipattern detector. It checks for 46 known design antipatterns across two categories:
|
|
164
164
|
|
|
165
165
|
- **slop** — AI tells that signal lack of intentional design (purple palettes, side-tabs, identical card grids, italic-serif heroes, overused fonts)
|
|
166
166
|
- **quality** — Design principle violations (spacing, hierarchy, readability, contrast, motion, typography)
|
|
167
167
|
|
|
168
168
|
To run detection on HTML/CSS files:
|
|
169
169
|
```bash
|
|
170
|
+
monomind design detect <file-or-dir>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Or use `npx impeccable detect` directly as an alternative:
|
|
174
|
+
```bash
|
|
170
175
|
npx impeccable detect <file-or-dir>
|
|
171
176
|
```
|
|
172
177
|
|
|
@@ -177,8 +182,31 @@ npm install -g impeccable
|
|
|
177
182
|
npx impeccable@latest detect <file-or-dir>
|
|
178
183
|
```
|
|
179
184
|
|
|
185
|
+
For machine-readable output (e.g. CI pipelines):
|
|
186
|
+
```bash
|
|
187
|
+
monomind design detect --json <file-or-dir>
|
|
188
|
+
```
|
|
189
|
+
|
|
180
190
|
For the full antipattern catalog with detection rules and remediation, see [reference/antipatterns-catalog.md](reference/antipatterns-catalog.md).
|
|
181
191
|
|
|
192
|
+
## OKLCH Palette Seed
|
|
193
|
+
|
|
194
|
+
Before composing a brand palette, seed the anchor color from the curated OKLCH library (129 hand-curated seeds):
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
monomind design palette # random seed (hue-zone weighted)
|
|
198
|
+
monomind design palette --from "my-product-name" # deterministic seed from product name
|
|
199
|
+
monomind design palette --id seed-021 # specific seed by ID
|
|
200
|
+
monomind design palette --json # machine-readable output
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Each seed returns:
|
|
204
|
+
- **Anchor color** — the single OKLCH value your primary brand color derives from
|
|
205
|
+
- **Mood** — one evocative phrase describing the register this hue inhabits
|
|
206
|
+
- **Strategy** — a concrete composition hint (bg choice, accent pairing, surface treatment)
|
|
207
|
+
|
|
208
|
+
The seed is the start, not the recipe. Compose the full 5-role palette (bg, surface, ink, accent, muted) using your brief and the color-strategy guidance in this skill. The same seed can produce a dark-mode jazz club or a light-mode clinical brand depending on what the brief calls for.
|
|
209
|
+
|
|
182
210
|
## UX Quality Gate
|
|
183
211
|
|
|
184
212
|
Antipatterns catch aesthetic and visual issues. For implementation-level UX quality — accessibility, touch interaction, form feedback, navigation patterns, animation timing, performance — load:
|
|
@@ -290,6 +318,9 @@ Shadows max at 0.15 alpha. No heavy drop shadows.
|
|
|
290
318
|
| `components [target]` | Build | Build component systems, token foundations, theme toggles | [reference/component-system.md](reference/component-system.md) |
|
|
291
319
|
| `research [target]` | Evaluate | UX research, usability testing, personas, journey mapping | [reference/ux-research.md](reference/ux-research.md) |
|
|
292
320
|
| `images [target]` | Build | Generate design images, hero photography, inclusive prompts | [reference/image-prompts.md](reference/image-prompts.md) |
|
|
321
|
+
| `hooks [action]` | Config | Manage the impeccable design detector hook per project | [reference/hooks.md](reference/hooks.md) |
|
|
322
|
+
| `detect [file-or-dir]` | Evaluate | Run design anti-pattern detection on HTML/CSS files | (inline) |
|
|
323
|
+
| `palette [--from name]` | Build | Seed a brand palette from the OKLCH library (129 seeds) | (inline) |
|
|
293
324
|
|
|
294
325
|
### Routing rules
|
|
295
326
|
|