klayout-tools 0.1.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.
- klayout_tools-0.1.0/.claude/README.md +248 -0
- klayout_tools-0.1.0/.claude/agents/loom-architect.md +29 -0
- klayout_tools-0.1.0/.claude/agents/loom-auditor.md +19 -0
- klayout_tools-0.1.0/.claude/agents/loom-builder.md +22 -0
- klayout_tools-0.1.0/.claude/agents/loom-champion.md +30 -0
- klayout_tools-0.1.0/.claude/agents/loom-curator.md +24 -0
- klayout_tools-0.1.0/.claude/agents/loom-daemon.md +19 -0
- klayout_tools-0.1.0/.claude/agents/loom-doctor.md +28 -0
- klayout_tools-0.1.0/.claude/agents/loom-guide.md +22 -0
- klayout_tools-0.1.0/.claude/agents/loom-hermit.md +28 -0
- klayout_tools-0.1.0/.claude/agents/loom-judge.md +22 -0
- klayout_tools-0.1.0/.claude/commands/loom/architect-patterns.md +555 -0
- klayout_tools-0.1.0/.claude/commands/loom/architect-reference.md +265 -0
- klayout_tools-0.1.0/.claude/commands/loom/architect.md +326 -0
- klayout_tools-0.1.0/.claude/commands/loom/auditor.md +478 -0
- klayout_tools-0.1.0/.claude/commands/loom/builder-complexity.md +526 -0
- klayout_tools-0.1.0/.claude/commands/loom/builder-pr.md +813 -0
- klayout_tools-0.1.0/.claude/commands/loom/builder-worktree.md +380 -0
- klayout_tools-0.1.0/.claude/commands/loom/builder.md +923 -0
- klayout_tools-0.1.0/.claude/commands/loom/bump.md +427 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion-common.md +119 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion-epic.md +223 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion-issue-promo.md +306 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion-pr-merge.md +753 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion-reference.md +362 -0
- klayout_tools-0.1.0/.claude/commands/loom/champion.md +200 -0
- klayout_tools-0.1.0/.claude/commands/loom/curator.md +942 -0
- klayout_tools-0.1.0/.claude/commands/loom/doctor.md +862 -0
- klayout_tools-0.1.0/.claude/commands/loom/driver.md +11 -0
- klayout_tools-0.1.0/.claude/commands/loom/epic.md +396 -0
- klayout_tools-0.1.0/.claude/commands/loom/guide.md +1135 -0
- klayout_tools-0.1.0/.claude/commands/loom/help.md +115 -0
- klayout_tools-0.1.0/.claude/commands/loom/hermit-patterns.md +1184 -0
- klayout_tools-0.1.0/.claude/commands/loom/hermit.md +472 -0
- klayout_tools-0.1.0/.claude/commands/loom/imagine.md +619 -0
- klayout_tools-0.1.0/.claude/commands/loom/judge-reference.md +242 -0
- klayout_tools-0.1.0/.claude/commands/loom/judge.md +1465 -0
- klayout_tools-0.1.0/.claude/commands/loom/loom-iteration.md +26 -0
- klayout_tools-0.1.0/.claude/commands/loom/loom-parent.md +23 -0
- klayout_tools-0.1.0/.claude/commands/loom/loom.md +709 -0
- klayout_tools-0.1.0/.claude/commands/loom/probe-protocol.md +79 -0
- klayout_tools-0.1.0/.claude/commands/loom/sweep.md +2082 -0
- klayout_tools-0.1.0/.claude/commands/repo/all.md +111 -0
- klayout_tools-0.1.0/.claude/commands/repo/audit.md +91 -0
- klayout_tools-0.1.0/.claude/commands/repo/branches.md +244 -0
- klayout_tools-0.1.0/.claude/commands/repo/docs.md +125 -0
- klayout_tools-0.1.0/.claude/commands/repo/followups.md +180 -0
- klayout_tools-0.1.0/.claude/commands/repo/gitignore.md +77 -0
- klayout_tools-0.1.0/.claude/commands/repo/handoff.md +149 -0
- klayout_tools-0.1.0/.claude/commands/repo/help.md +110 -0
- klayout_tools-0.1.0/.claude/commands/repo/host-optimize.md +370 -0
- klayout_tools-0.1.0/.claude/commands/repo/links.md +72 -0
- klayout_tools-0.1.0/.claude/commands/repo/orphans.md +61 -0
- klayout_tools-0.1.0/.claude/commands/repo/readme.md +81 -0
- klayout_tools-0.1.0/.claude/commands/repo/release.md +483 -0
- klayout_tools-0.1.0/.claude/commands/repo/remote.md +581 -0
- klayout_tools-0.1.0/.claude/commands/repo/reset.md +99 -0
- klayout_tools-0.1.0/.claude/commands/repo/sudo.md +275 -0
- klayout_tools-0.1.0/.claude/commands/repo/tidy.md +197 -0
- klayout_tools-0.1.0/.claude/commands/repo/update-tools.md +199 -0
- klayout_tools-0.1.0/.claude/settings.json +130 -0
- klayout_tools-0.1.0/.claude/skills/repo/SKILL.md +167 -0
- klayout_tools-0.1.0/.claude/skills/repo/hooks/guard-destructive.sh +2247 -0
- klayout_tools-0.1.0/.claude/skills/repo/hooks/session-start-handoff.sh +196 -0
- klayout_tools-0.1.0/.claude/skills/repo/install-metadata.json +6 -0
- klayout_tools-0.1.0/.claude/skills/repo/scripts/repo-remote.sh +790 -0
- klayout_tools-0.1.0/.github/CONFIGURATION.md +78 -0
- klayout_tools-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- klayout_tools-0.1.0/.github/ISSUE_TEMPLATE/task.yml +81 -0
- klayout_tools-0.1.0/.github/labels.yml +153 -0
- klayout_tools-0.1.0/.github/workflows/ci.yml +77 -0
- klayout_tools-0.1.0/.github/workflows/publish.yml +48 -0
- klayout_tools-0.1.0/.gitignore +60 -0
- klayout_tools-0.1.0/.loom/CLAUDE.md +367 -0
- klayout_tools-0.1.0/.loom/README.md +167 -0
- klayout_tools-0.1.0/.loom/bin/loom +222 -0
- klayout_tools-0.1.0/.loom/config/skill-routes.json +51 -0
- klayout_tools-0.1.0/.loom/config.json +104 -0
- klayout_tools-0.1.0/.loom/docs/advanced-hooks.md +189 -0
- klayout_tools-0.1.0/.loom/docs/blame-issue.md +69 -0
- klayout_tools-0.1.0/.loom/docs/build-gate.md +318 -0
- klayout_tools-0.1.0/.loom/docs/ci-integration.md +171 -0
- klayout_tools-0.1.0/.loom/docs/commit-signoff.md +68 -0
- klayout_tools-0.1.0/.loom/docs/daemon-reference.md +3450 -0
- klayout_tools-0.1.0/.loom/docs/fleet-comms.md +151 -0
- klayout_tools-0.1.0/.loom/docs/forge-authentication.md +191 -0
- klayout_tools-0.1.0/.loom/docs/github-authentication.md +187 -0
- klayout_tools-0.1.0/.loom/docs/guard-hooks.md +692 -0
- klayout_tools-0.1.0/.loom/docs/health-monitoring.md +118 -0
- klayout_tools-0.1.0/.loom/docs/machine-dispatcher.md +526 -0
- klayout_tools-0.1.0/.loom/docs/macos-tcc-codesign.md +112 -0
- klayout_tools-0.1.0/.loom/docs/model-cost-experiment.md +78 -0
- klayout_tools-0.1.0/.loom/docs/model-selection.md +154 -0
- klayout_tools-0.1.0/.loom/docs/runtime-adapters.md +443 -0
- klayout_tools-0.1.0/.loom/docs/semantic-search.md +105 -0
- klayout_tools-0.1.0/.loom/docs/tool-use-concurrency-errors.md +198 -0
- klayout_tools-0.1.0/.loom/docs/troubleshooting.md +566 -0
- klayout_tools-0.1.0/.loom/hooks/example-context/roles/builder.md +9 -0
- klayout_tools-0.1.0/.loom/hooks/example-context/topics/security.md +11 -0
- klayout_tools-0.1.0/.loom/hooks/example-context/topics/security.pattern +1 -0
- klayout_tools-0.1.0/.loom/hooks/example-context/universal.md +11 -0
- klayout_tools-0.1.0/.loom/hooks/guard-background-subagents.sh +114 -0
- klayout_tools-0.1.0/.loom/hooks/guard-destructive.sh +83 -0
- klayout_tools-0.1.0/.loom/hooks/guard-loom-workflow.sh +366 -0
- klayout_tools-0.1.0/.loom/hooks/guard-readonly-dirs.sh.template +154 -0
- klayout_tools-0.1.0/.loom/hooks/guard-worktree-paths.sh +320 -0
- klayout_tools-0.1.0/.loom/hooks/methodology-inject.sh +304 -0
- klayout_tools-0.1.0/.loom/hooks/skill-router.sh +232 -0
- klayout_tools-0.1.0/.loom/hooks/tests/test-guard-background-subagents.sh +208 -0
- klayout_tools-0.1.0/.loom/hooks/tests/test-guard-loom-workspace.sh +215 -0
- klayout_tools-0.1.0/.loom/hooks/tests/test-guard-worktree-paths.sh +281 -0
- klayout_tools-0.1.0/.loom/hooks/tests/test-methodology-inject.sh +304 -0
- klayout_tools-0.1.0/.loom/hooks/tests/test-skill-router.sh +252 -0
- klayout_tools-0.1.0/.loom/install-metadata.json +7 -0
- klayout_tools-0.1.0/.loom/roles/README.md +145 -0
- klayout_tools-0.1.0/.loom/roles/architect.json +13 -0
- klayout_tools-0.1.0/.loom/roles/architect.md +326 -0
- klayout_tools-0.1.0/.loom/roles/auditor.json +17 -0
- klayout_tools-0.1.0/.loom/roles/auditor.md +478 -0
- klayout_tools-0.1.0/.loom/roles/builder-complexity.md +526 -0
- klayout_tools-0.1.0/.loom/roles/builder-pr.md +813 -0
- klayout_tools-0.1.0/.loom/roles/builder-worktree.md +380 -0
- klayout_tools-0.1.0/.loom/roles/builder.json +18 -0
- klayout_tools-0.1.0/.loom/roles/builder.md +923 -0
- klayout_tools-0.1.0/.loom/roles/champion.json +36 -0
- klayout_tools-0.1.0/.loom/roles/champion.md +200 -0
- klayout_tools-0.1.0/.loom/roles/curator.json +13 -0
- klayout_tools-0.1.0/.loom/roles/curator.md +942 -0
- klayout_tools-0.1.0/.loom/roles/doctor.json +13 -0
- klayout_tools-0.1.0/.loom/roles/doctor.md +862 -0
- klayout_tools-0.1.0/.loom/roles/driver.json +9 -0
- klayout_tools-0.1.0/.loom/roles/driver.md +11 -0
- klayout_tools-0.1.0/.loom/roles/guide.json +9 -0
- klayout_tools-0.1.0/.loom/roles/guide.md +1135 -0
- klayout_tools-0.1.0/.loom/roles/hermit-patterns.md +1184 -0
- klayout_tools-0.1.0/.loom/roles/hermit.json +13 -0
- klayout_tools-0.1.0/.loom/roles/hermit.md +472 -0
- klayout_tools-0.1.0/.loom/roles/judge-reference.md +242 -0
- klayout_tools-0.1.0/.loom/roles/judge.json +18 -0
- klayout_tools-0.1.0/.loom/roles/judge.md +1465 -0
- klayout_tools-0.1.0/.loom/roles/loom.json +13 -0
- klayout_tools-0.1.0/.loom/roles/loom.md +709 -0
- klayout_tools-0.1.0/.loom/roles/probe-protocol.md +79 -0
- klayout_tools-0.1.0/.loom/scripts/agent-destroy.sh +197 -0
- klayout_tools-0.1.0/.loom/scripts/agent-metrics.sh +37 -0
- klayout_tools-0.1.0/.loom/scripts/agent-spawn.sh +22 -0
- klayout_tools-0.1.0/.loom/scripts/agent-wait.sh +24 -0
- klayout_tools-0.1.0/.loom/scripts/archive-logs.sh +295 -0
- klayout_tools-0.1.0/.loom/scripts/archive-transcripts.sh +373 -0
- klayout_tools-0.1.0/.loom/scripts/blame-issue.sh +306 -0
- klayout_tools-0.1.0/.loom/scripts/build-gate.sh +101 -0
- klayout_tools-0.1.0/.loom/scripts/check-ci-status.sh +313 -0
- klayout_tools-0.1.0/.loom/scripts/check-duplicate.sh +622 -0
- klayout_tools-0.1.0/.loom/scripts/check-host-sleep.sh +213 -0
- klayout_tools-0.1.0/.loom/scripts/check-label-descriptions.sh +124 -0
- klayout_tools-0.1.0/.loom/scripts/check-labels-drift.sh +87 -0
- klayout_tools-0.1.0/.loom/scripts/check-main-clean.sh +271 -0
- klayout_tools-0.1.0/.loom/scripts/check-main-freshness.sh +219 -0
- klayout_tools-0.1.0/.loom/scripts/check-phantom-labels.sh +127 -0
- klayout_tools-0.1.0/.loom/scripts/check-runtime-capabilities.sh +205 -0
- klayout_tools-0.1.0/.loom/scripts/check-shutdown.sh +58 -0
- klayout_tools-0.1.0/.loom/scripts/check-usage.sh +22 -0
- klayout_tools-0.1.0/.loom/scripts/checkpoint.sh +49 -0
- klayout_tools-0.1.0/.loom/scripts/claude-wrapper.sh +2155 -0
- klayout_tools-0.1.0/.loom/scripts/clean-labels.sh +14 -0
- klayout_tools-0.1.0/.loom/scripts/clean.sh +42 -0
- klayout_tools-0.1.0/.loom/scripts/cleanup-branches.sh +109 -0
- klayout_tools-0.1.0/.loom/scripts/cleanup.sh +44 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-attach.sh +176 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-daemon-start.sh +1231 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-daemon-stop.sh +421 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-daemon-update.sh +1244 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-daemon-watchdog.sh +358 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-help.sh +263 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-logs.sh +330 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-scale.sh +446 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-send.sh +297 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-start.sh +428 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-status.sh +455 -0
- klayout_tools-0.1.0/.loom/scripts/cli/loom-stop.sh +359 -0
- klayout_tools-0.1.0/.loom/scripts/cli/safehoused-service.sh +474 -0
- klayout_tools-0.1.0/.loom/scripts/experiments/README.md +57 -0
- klayout_tools-0.1.0/.loom/scripts/experiments/judge-fanout-corpus-runner.sh +206 -0
- klayout_tools-0.1.0/.loom/scripts/experiments/judge-fanout-experiment.sh +114 -0
- klayout_tools-0.1.0/.loom/scripts/experiments/judge-fanout-results-template.md +61 -0
- klayout_tools-0.1.0/.loom/scripts/experiments/judge-fanout-workflow.js +363 -0
- klayout_tools-0.1.0/.loom/scripts/fleet-check.sh +166 -0
- klayout_tools-0.1.0/.loom/scripts/fleet-send.sh +176 -0
- klayout_tools-0.1.0/.loom/scripts/gh-cached +422 -0
- klayout_tools-0.1.0/.loom/scripts/kill-session-tree.sh +170 -0
- klayout_tools-0.1.0/.loom/scripts/lib/classify-error.sh +272 -0
- klayout_tools-0.1.0/.loom/scripts/lib/config-resolver.sh +142 -0
- klayout_tools-0.1.0/.loom/scripts/lib/default-branch.sh +91 -0
- klayout_tools-0.1.0/.loom/scripts/lib/disk-headroom.sh +264 -0
- klayout_tools-0.1.0/.loom/scripts/lib/forge-helpers.sh +915 -0
- klayout_tools-0.1.0/.loom/scripts/lib/launchd-domain.sh +60 -0
- klayout_tools-0.1.0/.loom/scripts/lib/locate-daemon-bin.sh +40 -0
- klayout_tools-0.1.0/.loom/scripts/lib/loom-tools.sh +157 -0
- klayout_tools-0.1.0/.loom/scripts/lib/mcp-config.sh +192 -0
- klayout_tools-0.1.0/.loom/scripts/lib/pipe-pane-cmd.sh +31 -0
- klayout_tools-0.1.0/.loom/scripts/lib/systemd-user.sh +107 -0
- klayout_tools-0.1.0/.loom/scripts/lib/worktree-root.sh +97 -0
- klayout_tools-0.1.0/.loom/scripts/merge-pr.sh +1741 -0
- klayout_tools-0.1.0/.loom/scripts/pr-worktree.sh +166 -0
- klayout_tools-0.1.0/.loom/scripts/probe-tokens.sh +70 -0
- klayout_tools-0.1.0/.loom/scripts/random-file.sh +457 -0
- klayout_tools-0.1.0/.loom/scripts/rebase-stacked-children.sh +273 -0
- klayout_tools-0.1.0/.loom/scripts/reconcile-stack.sh +215 -0
- klayout_tools-0.1.0/.loom/scripts/recover-orphaned-shepherds.sh +41 -0
- klayout_tools-0.1.0/.loom/scripts/require-complexity-marker.sh +57 -0
- klayout_tools-0.1.0/.loom/scripts/resolve-model.sh +46 -0
- klayout_tools-0.1.0/.loom/scripts/resolve-tier-model.sh +74 -0
- klayout_tools-0.1.0/.loom/scripts/resync-installed.sh +666 -0
- klayout_tools-0.1.0/.loom/scripts/run-tests.sh +56 -0
- klayout_tools-0.1.0/.loom/scripts/signal.sh +272 -0
- klayout_tools-0.1.0/.loom/scripts/spawn-claude.sh +530 -0
- klayout_tools-0.1.0/.loom/scripts/spawn-worker.sh +143 -0
- klayout_tools-0.1.0/.loom/scripts/start-daemon.sh +50 -0
- klayout_tools-0.1.0/.loom/scripts/status.sh +430 -0
- klayout_tools-0.1.0/.loom/scripts/stop-daemon.sh +41 -0
- klayout_tools-0.1.0/.loom/scripts/strip-ansi.sh +9 -0
- klayout_tools-0.1.0/.loom/scripts/sweep-checkpoint.sh +283 -0
- klayout_tools-0.1.0/.loom/scripts/sweep-experiment.sh +30 -0
- klayout_tools-0.1.0/.loom/scripts/sweep-run-registry.sh +222 -0
- klayout_tools-0.1.0/.loom/scripts/sync-labels.sh +286 -0
- klayout_tools-0.1.0/.loom/scripts/tests/lib/launchd-sandbox.sh +129 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-archive-transcripts.sh +142 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-blame-issue.sh +225 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-build-rs-watchset.sh +232 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-check-duplicate.sh +296 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-check-host-sleep.sh +150 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-check-main-clean.sh +351 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-check-main-freshness.sh +239 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-check-runtime-capabilities.sh +209 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-config-resolver.sh +197 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-config-tiers-cli-migration.sh +289 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-default-branch.sh +198 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-disk-headroom.sh +325 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-fleet-check.sh +360 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-fleet-send.sh +263 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-forge-helpers.sh +389 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-gitignore-guard.sh +216 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-guard-hook-schema.sh +221 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-install-active-session.sh +378 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-install-pr-markers.sh +403 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-install-reinstall-safety.sh +321 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-install-source-guard.sh +287 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-install-stash-scope.sh +149 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-judge-fanout-experiment.sh +157 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-daemon-launchd-plist.sh +265 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-daemon-start.sh +717 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-daemon-stop.sh +544 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-daemon-update.sh +2213 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-daemon-watchdog.sh +391 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-loom-dispatcher.sh +370 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-mcp-config.sh +487 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-auto-merge-disabled-fallback.sh +373 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-auto-reconcile.sh +300 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-help.sh +127 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-local-branch-cleanup.sh +247 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-merge-ordering-guard.sh +281 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-partial-increment.sh +279 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-primary-checkout-advice.sh +245 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-primary-worktree-guard.sh +278 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-unstable-fallback.sh +748 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-worktree-awk.sh +187 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-merge-pr-worktree-path.sh +359 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-pr-worktree-isolation.sh +193 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-probe-tokens-fallback.sh +140 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-provision-hooks.sh +212 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-provision-skills.sh +228 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-rebase-stacked-children.sh +331 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-reconcile-stack.sh +280 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-resync-installed.sh +570 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-safehoused-service.sh +172 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-spawn-claude.sh +1226 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-spawn-worker.sh +279 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-sweep-auto-stack.sh +163 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-sweep-checkpoint.sh +366 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-sweep-experiment.sh +100 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-sweep-pr-mode.sh +180 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-sweep-run-registry.sh +188 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-verify-install-scope.sh +267 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-warn-out-of-set-deps.sh +245 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-base-override.sh +151 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-concurrency.sh +283 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-hookspath.sh +111 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-json-purity.sh +252 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-nested-symlinks.sh +292 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-remove.sh +174 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-root-override.sh +262 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-sentinel-reinvoke.sh +186 -0
- klayout_tools-0.1.0/.loom/scripts/tests/test-worktree-sentinel.sh +167 -0
- klayout_tools-0.1.0/.loom/scripts/validate-phase.sh +25 -0
- klayout_tools-0.1.0/.loom/scripts/validate-roles.sh +258 -0
- klayout_tools-0.1.0/.loom/scripts/validate-toolchain.sh +354 -0
- klayout_tools-0.1.0/.loom/scripts/verify-install.sh +890 -0
- klayout_tools-0.1.0/.loom/scripts/verify-token-precedence.sh +83 -0
- klayout_tools-0.1.0/.loom/scripts/warn-out-of-set-deps.sh +174 -0
- klayout_tools-0.1.0/.loom/scripts/worktree-return.sh +218 -0
- klayout_tools-0.1.0/.loom/scripts/worktree.sh +1695 -0
- klayout_tools-0.1.0/CHANGELOG.md +22 -0
- klayout_tools-0.1.0/CLAUDE.md +45 -0
- klayout_tools-0.1.0/LICENSE +21 -0
- klayout_tools-0.1.0/PKG-INFO +127 -0
- klayout_tools-0.1.0/README.md +110 -0
- klayout_tools-0.1.0/RELEASING.md +95 -0
- klayout_tools-0.1.0/ROADMAP.md +87 -0
- klayout_tools-0.1.0/docs/ARCHITECTURE.md +120 -0
- klayout_tools-0.1.0/docs/README.md +32 -0
- klayout_tools-0.1.0/docs/cli/cells.md +140 -0
- klayout_tools-0.1.0/docs/cli/drc.md +204 -0
- klayout_tools-0.1.0/docs/cli/layers.md +111 -0
- klayout_tools-0.1.0/docs/cli/pdk.md +240 -0
- klayout_tools-0.1.0/docs/cli/stats.md +191 -0
- klayout_tools-0.1.0/docs/design/lambdalib-survey.md +166 -0
- klayout_tools-0.1.0/docs/design/sc-leflib-evaluation.md +244 -0
- klayout_tools-0.1.0/docs/design/scgallery-zerosoc-survey.md +159 -0
- klayout_tools-0.1.0/docs/design/siliconcompiler-core-survey.md +262 -0
- klayout_tools-0.1.0/docs/design/spice-corner-runner-spike.md +359 -0
- klayout_tools-0.1.0/docs/guides/building-klayout-macos.md +338 -0
- klayout_tools-0.1.0/docs/json-contract.md +109 -0
- klayout_tools-0.1.0/examples/drc/example.drc.json +169 -0
- klayout_tools-0.1.0/examples/drc/example.gds +0 -0
- klayout_tools-0.1.0/examples/drc/generate.py +59 -0
- klayout_tools-0.1.0/kb/README.md +90 -0
- klayout_tools-0.1.0/kb/entries/inverter-based-comparator.json +23 -0
- klayout_tools-0.1.0/kb/entries/sky130-bandgap-reference.json +23 -0
- klayout_tools-0.1.0/kb/entries/sky130-spiral-inductor.json +23 -0
- klayout_tools-0.1.0/kb/schema/entry.schema.json +83 -0
- klayout_tools-0.1.0/loom.sh +29 -0
- klayout_tools-0.1.0/package.json +13 -0
- klayout_tools-0.1.0/pdks/README.md +29 -0
- klayout_tools-0.1.0/pyproject.toml +58 -0
- klayout_tools-0.1.0/scripts/README.md +25 -0
- klayout_tools-0.1.0/scripts/deploy-site.sh +20 -0
- klayout_tools-0.1.0/scripts/fetch-pdks.sh +48 -0
- klayout_tools-0.1.0/site/README.md +22 -0
- klayout_tools-0.1.0/site/index.html +97 -0
- klayout_tools-0.1.0/src/klayout_tools/__init__.py +3 -0
- klayout_tools-0.1.0/src/klayout_tools/cells.py +148 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/__init__.py +28 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/__main__.py +8 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/cells_cmd.py +84 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/drc_cmd.py +59 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/layers_cmd.py +54 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/output.py +79 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/parser.py +222 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/pdk_cmd.py +82 -0
- klayout_tools-0.1.0/src/klayout_tools/cli/stats_cmd.py +82 -0
- klayout_tools-0.1.0/src/klayout_tools/decks/__init__.py +84 -0
- klayout_tools-0.1.0/src/klayout_tools/decks/gf180mcu.py +208 -0
- klayout_tools-0.1.0/src/klayout_tools/decks/sky130.py +167 -0
- klayout_tools-0.1.0/src/klayout_tools/drc.py +185 -0
- klayout_tools-0.1.0/src/klayout_tools/layers.py +98 -0
- klayout_tools-0.1.0/src/klayout_tools/pdk.py +254 -0
- klayout_tools-0.1.0/src/klayout_tools/stats.py +207 -0
- klayout_tools-0.1.0/tests/corpus/README.md +87 -0
- klayout_tools-0.1.0/tests/corpus/generate_golden.py +55 -0
- klayout_tools-0.1.0/tests/corpus/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__and2_1.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__clkinv_1.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__dffnq_1.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/golden/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__and2_1.layers.json +86 -0
- klayout_tools-0.1.0/tests/corpus/golden/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__clkinv_1.layers.json +86 -0
- klayout_tools-0.1.0/tests/corpus/golden/gf180mcu/gf180mcu_fd_sc_mcu9t5v0__dffnq_1.layers.json +86 -0
- klayout_tools-0.1.0/tests/corpus/golden/sky130/sky130_fd_sc_hd__buf_4.layers.json +140 -0
- klayout_tools-0.1.0/tests/corpus/golden/sky130/sky130_fd_sc_hd__dfxtp_2.layers.json +140 -0
- klayout_tools-0.1.0/tests/corpus/golden/sky130/sky130_fd_sc_hd__inv_1.layers.json +140 -0
- klayout_tools-0.1.0/tests/corpus/golden/sky130/sky130_fd_sc_hd__nand2_2.layers.json +140 -0
- klayout_tools-0.1.0/tests/corpus/sky130/sky130_fd_sc_hd__buf_4.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/sky130/sky130_fd_sc_hd__dfxtp_2.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/sky130/sky130_fd_sc_hd__inv_1.gds +0 -0
- klayout_tools-0.1.0/tests/corpus/sky130/sky130_fd_sc_hd__nand2_2.gds +0 -0
- klayout_tools-0.1.0/tests/test_cells.py +262 -0
- klayout_tools-0.1.0/tests/test_cli.py +42 -0
- klayout_tools-0.1.0/tests/test_corpus.py +100 -0
- klayout_tools-0.1.0/tests/test_drc.py +421 -0
- klayout_tools-0.1.0/tests/test_kb.py +150 -0
- klayout_tools-0.1.0/tests/test_layers.py +176 -0
- klayout_tools-0.1.0/tests/test_output.py +56 -0
- klayout_tools-0.1.0/tests/test_pdk.py +367 -0
- klayout_tools-0.1.0/tests/test_stats.py +271 -0
- klayout_tools-0.1.0/uv.lock +545 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# Claude Code Settings
|
|
2
|
+
|
|
3
|
+
This directory contains Claude Code configuration for the Loom project.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
- **`settings.json`**: Team-wide permissions and settings (committed to git)
|
|
8
|
+
- **`settings.local.json`**: Personal preferences (gitignored, create if needed)
|
|
9
|
+
- **`../.mcp.json`**: MCP server configuration (at project root, committed to git)
|
|
10
|
+
- **`agents/`**: Custom subagent definitions for Loom roles (see below)
|
|
11
|
+
|
|
12
|
+
## Pre-approved Commands
|
|
13
|
+
|
|
14
|
+
The `settings.json` file pre-approves common development commands to streamline the AI workflow:
|
|
15
|
+
|
|
16
|
+
### GitHub CLI (`gh`)
|
|
17
|
+
- PR operations: create, edit, view, list, checkout, diff, review, checks
|
|
18
|
+
- Issue operations: create, edit, view, list, close
|
|
19
|
+
- Workflow runs: view
|
|
20
|
+
|
|
21
|
+
### Git Operations
|
|
22
|
+
- Status, add, commit, push, pull, fetch, merge
|
|
23
|
+
- Branch management: checkout, branch, log, diff
|
|
24
|
+
- Working tree operations: restore, stash, reset, clean
|
|
25
|
+
- Worktree operations: add
|
|
26
|
+
- Configuration: config, check-ignore
|
|
27
|
+
|
|
28
|
+
### Package Management
|
|
29
|
+
- `pnpm daemon:dev` - Run daemon in dev mode
|
|
30
|
+
- `pnpm daemon:build` - Build daemon (release)
|
|
31
|
+
- `pnpm check:all` - Run all checks
|
|
32
|
+
- `pnpm check:ci` - Run CI checks locally
|
|
33
|
+
|
|
34
|
+
### Code Quality
|
|
35
|
+
- `pnpm clippy` - Rust linting
|
|
36
|
+
- `pnpm test` - Run tests
|
|
37
|
+
|
|
38
|
+
### Rust/Cargo
|
|
39
|
+
- `cargo check` - Check compilation
|
|
40
|
+
- `cargo build` - Build project
|
|
41
|
+
- `cargo test` - Run tests
|
|
42
|
+
|
|
43
|
+
### Utilities
|
|
44
|
+
- File operations: cat, ls, pwd, cd, mkdir
|
|
45
|
+
- Image conversion: convert, magick, iconutil
|
|
46
|
+
- Terminal management: tmux list-sessions
|
|
47
|
+
- Web search: Enabled
|
|
48
|
+
|
|
49
|
+
## Local Overrides
|
|
50
|
+
|
|
51
|
+
Create `.claude/settings.local.json` for personal preferences:
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"permissions": {
|
|
56
|
+
"allow": [
|
|
57
|
+
"Bash(your custom command:*)"
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Local settings override team settings for that specific configuration key.
|
|
64
|
+
|
|
65
|
+
## MCP Server
|
|
66
|
+
|
|
67
|
+
Loom provides a single **unified `mcp-loom` MCP server** (configured in
|
|
68
|
+
`.mcp.json`) that consolidates log monitoring, terminal management, and UI/state
|
|
69
|
+
control. It replaces the historical trio of separate `loom-logs` /
|
|
70
|
+
`loom-terminals` / `loom-ui` servers. Representative tools by category:
|
|
71
|
+
|
|
72
|
+
**Log tools**:
|
|
73
|
+
- `tail_daemon_log` - View daemon logs (`~/.loom/daemon.log`)
|
|
74
|
+
- `list_terminal_logs` - List terminal output files
|
|
75
|
+
- `tail_terminal_log` - View specific terminal output
|
|
76
|
+
|
|
77
|
+
**Terminal tools**:
|
|
78
|
+
- `list_terminals` - List all active terminals
|
|
79
|
+
- `get_terminal_output` - Read terminal output
|
|
80
|
+
- `get_selected_terminal` - Get current terminal info
|
|
81
|
+
- `send_terminal_input` - Execute commands in terminals
|
|
82
|
+
- `create_terminal` / `configure_terminal` / `restart_terminal` - Manage terminal sessions
|
|
83
|
+
|
|
84
|
+
**UI / state tools**:
|
|
85
|
+
- `read_console_log` - View browser console output (JavaScript errors, console.log statements)
|
|
86
|
+
- `read_state_file` - Read current application state (.loom/state.json)
|
|
87
|
+
- `read_config_file` - Read terminal configurations (.loom/config.json)
|
|
88
|
+
- `trigger_start` - Trigger workspace start with confirmation dialog
|
|
89
|
+
- `trigger_force_start` - Trigger force start without confirmation (immediate reset)
|
|
90
|
+
|
|
91
|
+
**Label State Machine Reset**: When the workspace is started (via `trigger_start` or `trigger_force_start`), the `reset_github_labels` daemon command automatically resets the GitHub label state machine:
|
|
92
|
+
- Removes `loom:building` from all open issues (workers can reclaim them)
|
|
93
|
+
- Replaces `loom:reviewing` with `loom:review-requested` on all open PRs (reviewer can re-review)
|
|
94
|
+
- This ensures a clean state when restarting the workspace with fresh agent terminals
|
|
95
|
+
|
|
96
|
+
See the mcp-loom package README for the full tool catalog.
|
|
97
|
+
|
|
98
|
+
**Note**: When you first open the project, Claude Code will prompt you to approve the MCP server. You can also enable it automatically by setting `"enableAllProjectMcpServers": true` in your `.claude/settings.local.json`.
|
|
99
|
+
|
|
100
|
+
## Slash Commands
|
|
101
|
+
|
|
102
|
+
The `commands/` directory contains slash commands that define Loom roles. Each command file contains the complete role definition - there's no indirection to separate role files.
|
|
103
|
+
|
|
104
|
+
### Available Commands
|
|
105
|
+
|
|
106
|
+
Commands under `.claude/commands/loom/` are invoked in the namespaced
|
|
107
|
+
`/loom:<role>` form (Claude Code 2.1+ requires this for subdirectory commands —
|
|
108
|
+
see #3345):
|
|
109
|
+
|
|
110
|
+
| Command | Role | Purpose |
|
|
111
|
+
|---------|------|---------|
|
|
112
|
+
| `/loom:builder` | Builder | Implements features for `loom:issue` issues and creates PRs |
|
|
113
|
+
| `/loom:judge` | Judge | Reviews PRs with `loom:review-requested` label |
|
|
114
|
+
| `/loom:curator` | Curator | Enhances issues and marks them as `loom:curated` |
|
|
115
|
+
| `/loom:architect` | Architect | Creates architectural proposals with `loom:architect` |
|
|
116
|
+
| `/loom:hermit` | Hermit | Identifies bloat and creates simplification issues |
|
|
117
|
+
| `/loom:doctor` | Doctor | Addresses PR feedback and resolves conflicts |
|
|
118
|
+
| `/loom:guide` | Guide | Triages issues and applies `loom:urgent` to top 3 |
|
|
119
|
+
| `/loom:champion` | Champion | Auto-merges approved PRs with `loom:pr` label |
|
|
120
|
+
| `/loom:help` | Help | Read-only overview of the installed `/loom:*` commands; `/loom:help <command>` describes one |
|
|
121
|
+
| `/loom:help <topic>` | Help | Comprehensive help guide with sub-topics (roles, workflow, commands, etc.) |
|
|
122
|
+
|
|
123
|
+
### How Slash Commands Work
|
|
124
|
+
|
|
125
|
+
**Manual Invocation**: Use slash commands to assume a role:
|
|
126
|
+
```bash
|
|
127
|
+
/loom:builder # Assume Builder role, find and implement a loom:issue
|
|
128
|
+
/loom:judge # Assume Judge role, review a PR with loom:review-requested
|
|
129
|
+
/loom:help # Show comprehensive Loom help guide
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Each slash command contains the complete role definition, including:
|
|
133
|
+
1. The role's purpose and responsibilities
|
|
134
|
+
2. Workflow guidelines and label transitions
|
|
135
|
+
3. Instructions for completing ONE iteration of the role's task
|
|
136
|
+
|
|
137
|
+
### Agent Roles in Workflow
|
|
138
|
+
|
|
139
|
+
The roles work together following the label-based workflow:
|
|
140
|
+
|
|
141
|
+
1. **architect** scans codebase → creates proposals with `loom:architect`
|
|
142
|
+
2. **User approves** → adds `loom:issue` label
|
|
143
|
+
3. **curator** enhances issues → marks as `loom:curated`
|
|
144
|
+
4. **User approves** → adds `loom:issue` label
|
|
145
|
+
5. **guide** prioritizes → adds `loom:urgent` to top 3
|
|
146
|
+
6. **builder** implements → creates PR with `loom:review-requested`
|
|
147
|
+
7. **judge** reviews → approves or requests changes
|
|
148
|
+
8. **doctor** fixes feedback → transitions back to `loom:review-requested`
|
|
149
|
+
9. **judge** approves → adds `loom:pr`
|
|
150
|
+
10. **champion** auto-merges the `loom:pr` PR → issue auto-closes via `Closes #N`
|
|
151
|
+
|
|
152
|
+
### Creating Custom Commands
|
|
153
|
+
|
|
154
|
+
To create a custom slash command:
|
|
155
|
+
|
|
156
|
+
1. Create `.claude/commands/your-command.md` (or `.claude/commands/your-namespace/command.md`) with the complete role definition
|
|
157
|
+
2. Include role purpose, workflow guidelines, and iteration instructions
|
|
158
|
+
3. Use it with `/your-command` (or `/your-namespace/command`)
|
|
159
|
+
|
|
160
|
+
**Note**: `.loom/roles/` contains symlinks to `.claude/commands/loom/` for backward compatibility. The single source of truth for all Loom role definitions is `.claude/commands/loom/`.
|
|
161
|
+
|
|
162
|
+
## Custom Subagents
|
|
163
|
+
|
|
164
|
+
The `agents/` directory contains custom subagent definitions for Loom roles. These subagents can be used with Claude Code's Task tool for spawning role-specific agents with fresh context.
|
|
165
|
+
|
|
166
|
+
### Available Subagents
|
|
167
|
+
|
|
168
|
+
| Subagent | Purpose |
|
|
169
|
+
|----------|---------|
|
|
170
|
+
| `loom-builder` | Implement features and fixes |
|
|
171
|
+
| `loom-judge` | Review pull requests |
|
|
172
|
+
| `loom-curator` | Enhance and organize issues |
|
|
173
|
+
| `loom-doctor` | Fix bugs and address PR feedback |
|
|
174
|
+
| `loom-champion` | Evaluate proposals, auto-merge PRs |
|
|
175
|
+
| `loom-architect` | Create architectural proposals |
|
|
176
|
+
| `loom-hermit` | Identify simplification opportunities |
|
|
177
|
+
| `loom-guide` | Prioritize and triage issues |
|
|
178
|
+
| `loom-auditor` | Validate main branch build/runtime |
|
|
179
|
+
| `loom-daemon` | Observe/dispatch the Rust `loom-daemon` via MCP tools |
|
|
180
|
+
|
|
181
|
+
The stubs do not carry a `model:` frontmatter field — a subagent's model is
|
|
182
|
+
resolved through the model-selection precedence chain (role JSON
|
|
183
|
+
`suggestedModel`, workspace override, or explicit dispatch param), not the stub.
|
|
184
|
+
See CLAUDE.md → "Model Selection Strategy".
|
|
185
|
+
|
|
186
|
+
> **Note**: the `loom-shepherd` subagent was removed in v0.10.0 along with the `/shepherd` slash command — see [the migration guide](https://github.com/rjwalters/loom/blob/main/docs/migration/v0.10.0-shepherd-deprecation.md). Use `/loom:sweep <issue>` (Tier 1) for the equivalent lifecycle. The `loom-daemon` subagent is preserved and now documents the Rust `loom-daemon` binary's MCP dispatch surface (`mcp__loom__dispatch_sweep` / `mcp__loom__list_sweeps` …) rather than the deleted Python brain.
|
|
187
|
+
|
|
188
|
+
### How Subagents Work
|
|
189
|
+
|
|
190
|
+
Subagents are specialized AI assistants that run in their own context window. Each has:
|
|
191
|
+
- Custom system prompt referencing the role definition in `.loom/roles/`
|
|
192
|
+
- Specific tool access appropriate for the role
|
|
193
|
+
- Model selection optimized for the task complexity
|
|
194
|
+
|
|
195
|
+
**Using Subagents with Task**:
|
|
196
|
+
|
|
197
|
+
The `/loom:sweep` orchestrator (or the Rust `loom-daemon`) can dispatch subagents for each phase. The recommended pattern is **native dispatch** -- pass the Loom role directly as `subagent_type`. Claude Code resolves `loom-<role>` against the `.claude/agents/loom-*.md` agent definitions that ship with Loom:
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
# Spawn builder subagent with fresh context using native dispatch.
|
|
201
|
+
# subagent_type matches the agent definition name (loom-builder, loom-judge,
|
|
202
|
+
# loom-doctor, loom-curator, loom-champion, loom-architect, loom-hermit,
|
|
203
|
+
# loom-guide, loom-auditor).
|
|
204
|
+
result = Task(
|
|
205
|
+
description="Builder phase for issue #123",
|
|
206
|
+
prompt="Implement issue #123",
|
|
207
|
+
subagent_type="loom-builder",
|
|
208
|
+
run_in_background=False
|
|
209
|
+
)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
The agent definition wires the correct system prompt and tool allowlist, so the caller only needs to supply the task-specific prompt (e.g., the issue number). The model is not set by the stub — it comes from the model-selection precedence chain (see CLAUDE.md → "Model Selection Strategy").
|
|
213
|
+
|
|
214
|
+
**Legacy pattern** (`subagent_type="general-purpose"` + a slash command in the prompt) still works for environments where the `loom-*` agent definitions are not installed, but prefer native dispatch when available:
|
|
215
|
+
|
|
216
|
+
```python
|
|
217
|
+
# Legacy fallback - role selection happens via the slash command in the prompt.
|
|
218
|
+
# Note: Claude Code 2.1+ requires the namespaced `/loom:<role>` form for
|
|
219
|
+
# subdirectory commands (`.claude/commands/loom/<role>.md`). See issue #3345.
|
|
220
|
+
result = Task(
|
|
221
|
+
description="Builder phase for issue #123",
|
|
222
|
+
prompt="/loom:builder 123",
|
|
223
|
+
subagent_type="general-purpose",
|
|
224
|
+
run_in_background=False
|
|
225
|
+
)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Benefits**:
|
|
229
|
+
- **Fresh context**: Each subagent starts clean, avoiding context pollution
|
|
230
|
+
- **Role isolation**: Subagents focus on their specific task
|
|
231
|
+
- **Cost control**: Use faster/cheaper models for simpler roles (sonnet vs opus)
|
|
232
|
+
- **Better observability**: Clear which role is running
|
|
233
|
+
|
|
234
|
+
### Subagents vs Slash Commands
|
|
235
|
+
|
|
236
|
+
| Feature | Slash Commands | Subagents |
|
|
237
|
+
|---------|----------------|-----------|
|
|
238
|
+
| Context | Shared with main conversation | Isolated, fresh context |
|
|
239
|
+
| Invocation | `/loom:builder 123` | `Task(subagent_type="loom-builder", prompt="Implement issue #123")` (legacy: `subagent_type="general-purpose"` + `/loom:builder 123`) |
|
|
240
|
+
| Use case | Manual orchestration | Automated orchestration |
|
|
241
|
+
| Visibility | In main conversation | Spawned as separate task |
|
|
242
|
+
|
|
243
|
+
**Use slash commands** for manual orchestration mode where you want direct control.
|
|
244
|
+
**Use subagents** for automated orchestration where `/loom:sweep` (or `loom-daemon`) coordinates roles with fresh context per phase.
|
|
245
|
+
|
|
246
|
+
## Documentation
|
|
247
|
+
|
|
248
|
+
Full Claude Code settings documentation: https://docs.claude.com/en/docs/claude-code/settings
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-architect
|
|
3
|
+
description: Loom Architect - System design specialist that scans the codebase for improvement opportunities and creates comprehensive architectural proposals with loom:architect label.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Architect (System Design Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to identify improvement opportunities and create architectural proposals.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/architect.md` for:
|
|
12
|
+
- Checking existing proposal count (`gh issue list --label="loom:architect"`)
|
|
13
|
+
- Scanning for opportunities across ALL domains:
|
|
14
|
+
- Features and enhancements
|
|
15
|
+
- Refactoring and code quality
|
|
16
|
+
- Documentation improvements
|
|
17
|
+
- Test coverage gaps
|
|
18
|
+
- CI/CD improvements
|
|
19
|
+
- Security hardening
|
|
20
|
+
- Performance optimization
|
|
21
|
+
- Creating comprehensive proposal issues with:
|
|
22
|
+
- Clear problem statement
|
|
23
|
+
- Proposed solution with design details
|
|
24
|
+
- Impact assessment
|
|
25
|
+
- Implementation approach
|
|
26
|
+
- Adding `loom:architect` label to proposals
|
|
27
|
+
- Assessing if `loom:urgent` is warranted
|
|
28
|
+
|
|
29
|
+
Create ONE well-formed proposal per iteration if backlog has < 3 open proposals.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-auditor
|
|
3
|
+
description: Loom Auditor - Main branch validation specialist that builds, tests, and runs the integrated software on `main` to verify it actually works, filing bug issues with the loom:auditor label when it finds runtime breakage.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Auditor (Main Branch Validation Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is the continuous integration health monitor: while Judge reviews individual PRs before merge, you verify that the integrated system on `main` still builds, tests, and runs after merges.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/auditor.md` for:
|
|
12
|
+
- Fetching and checking out the latest `origin/main` (`git fetch origin main && git checkout -B main origin/main`) — the Auditor often runs on a fresh CI checkout, so never assume `main` is already current
|
|
13
|
+
- CI-aware validation: skip redundant build/test when `check-ci-status.sh` reports CI already passed, and focus on runtime validation CI does not cover
|
|
14
|
+
- Building the project artifacts, running the test suite, and launching the application/CLI to observe startup and runtime behavior
|
|
15
|
+
- Analyzing stdout/stderr for errors, crashes, panics, and integration regressions
|
|
16
|
+
- Filing well-formed bug issues (with reproduction steps, output, and environment) labeled `loom:auditor` when validation fails — after checking for duplicates
|
|
17
|
+
- Raising capability requests when you hit a validation gap you lack the tooling to cover
|
|
18
|
+
|
|
19
|
+
Trust but verify - claims without runtime validation are just assumptions. A clean run has no "passed" label; the signal is the absence of a filed bug.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-builder
|
|
3
|
+
description: Loom Builder - Development worker that implements issues labeled loom:issue. Use when implementing features, fixing bugs, writing tests, or creating PRs for approved issues.
|
|
4
|
+
tools: Read, Glob, Grep, Bash, Write, Edit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Builder (Development Worker) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to implement issues labeled `loom:issue` (human-approved, ready for work).
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/builder.md` for:
|
|
12
|
+
- Finding and claiming issues with `loom:issue` label
|
|
13
|
+
- Creating worktrees with `./.loom/scripts/worktree.sh`
|
|
14
|
+
- Label discipline (claim: remove `loom:issue`, add `loom:building`)
|
|
15
|
+
- Reading issues with `--comments` flag
|
|
16
|
+
- Pre-implementation review of recent main changes
|
|
17
|
+
- Checking dependencies before claiming
|
|
18
|
+
- Scope management and decomposition criteria
|
|
19
|
+
- PR creation with `loom:review-requested` and `Closes #N` syntax (or `Part of #N` for a partial increment of a family/epic issue)
|
|
20
|
+
- Handling pre-existing lint/build failures
|
|
21
|
+
|
|
22
|
+
Never abandon claimed work - always create a PR, decompose into sub-issues, or mark as blocked.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-champion
|
|
3
|
+
description: Loom Champion - Human avatar that promotes quality issues to approved status AND auto-merges Judge-approved PRs meeting safety criteria. Use for final approval decisions.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Champion for this repository.
|
|
8
|
+
|
|
9
|
+
Your dual role is to promote curated issues to approved status AND auto-merge approved PRs.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/champion.md` for:
|
|
12
|
+
|
|
13
|
+
**PR Merging (Priority 1)**:
|
|
14
|
+
- Find PRs with `gh pr list --label="loom:pr" --state=open`
|
|
15
|
+
- Verify 6 safety criteria before merging:
|
|
16
|
+
1. Has `loom:pr` label
|
|
17
|
+
2. Size within configured limit (default 200, configurable via `.loom/config.json`; waived by `loom:auto-merge-ok` label)
|
|
18
|
+
3. No critical file modifications
|
|
19
|
+
4. Mergeable (no conflicts)
|
|
20
|
+
5. Updated within 24 hours
|
|
21
|
+
6. CI checks passing
|
|
22
|
+
- Drain the queue — merge every qualifying PR each iteration (no numeric cap; see `champion-pr-merge.md` §"PR Auto-Merge Batch Processing")
|
|
23
|
+
|
|
24
|
+
**Issue Promotion (Priority 2)**:
|
|
25
|
+
- Find issues with `gh issue list --label="loom:curated" --state=open`
|
|
26
|
+
- Evaluate against 8 quality criteria
|
|
27
|
+
- Promote by adding `loom:issue` label
|
|
28
|
+
- Process the whole queue, bounded only by the tier-based promotion limits in `champion-issue-promo.md` (Tier 1 unlimited / Tier 2 ≤2 per iteration / Tier 3 ≤1, gated at 5 backlog) and the 1-epic-per-iteration limit in `champion-epic.md`
|
|
29
|
+
|
|
30
|
+
Conservative bias - when in doubt, do NOT act. Always leave detailed audit trail comments.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-curator
|
|
3
|
+
description: Loom Curator - Issue enhancement specialist that enriches unlabeled issues with technical details, acceptance criteria, and implementation guidance, then marks them as loom:curated.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Curator (Issue Enhancement Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to enhance issues and prepare them for implementation.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/curator.md` for:
|
|
12
|
+
- Finding unlabeled issues needing curation
|
|
13
|
+
- Assessing if issues are well-formed (clear problem, acceptance criteria, test plan)
|
|
14
|
+
- Enhancing issues with:
|
|
15
|
+
- Technical context and root cause analysis
|
|
16
|
+
- Implementation guidance and approach options
|
|
17
|
+
- Acceptance criteria and test plans
|
|
18
|
+
- Relevant code references
|
|
19
|
+
- Marking enhanced issues as `loom:curated`
|
|
20
|
+
- NEVER adding `loom:issue` — promotion is never the Curator's call (only a human, Champion, or the `/loom:sweep` orchestrator's Approval gate promotes `loom:curated` → `loom:issue`; see `.loom/roles/curator.md` "Who promotes `loom:curated` → `loom:issue`" for the authoritative rule)
|
|
21
|
+
|
|
22
|
+
Before applying `loom:curated`, verify each path enumerated under `## Affected Files` exists on `origin/main` (curator runs in the user's working tree where uncommitted files are visible; builder runs in a worktree off `origin/main` where they are not). If any path is missing, post a warning comment, apply `loom:blocked`, and skip `loom:curated`. See `.claude/commands/loom/curator.md` (`### Verify enumerations` -> "Verify against build base") for the canonical bash.
|
|
23
|
+
|
|
24
|
+
Quality issues get marked `loom:curated` immediately; incomplete issues get enhanced first.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-daemon
|
|
3
|
+
description: Loom Daemon operator - Tier 2 daemon-mode surface that observes the running Rust `loom-daemon` binary via MCP tools and dispatches sweeps for multi-account autonomous batches. Use to monitor and drive the daemon, not to run a work-generation loop.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Daemon operator (Tier 2 daemon-mode surface) for this repository.
|
|
8
|
+
|
|
9
|
+
The `loom-daemon` is a long-lived **Rust binary** that holds the sweep registry, the event bus, and the reaper task in memory and exposes an MCP-level dispatch + monitoring + pub/sub surface. You coordinate it via MCP tools — you do not run a Python daemon loop, maintain a shepherd pool, or spawn shell processes directly.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/loom.md` for:
|
|
12
|
+
- Daemon detection — probe reachability with `mcp__loom__list_sweeps` (a healthy daemon returns a possibly-empty registry; a dead one fails fast)
|
|
13
|
+
- Dispatching work — `mcp__loom__dispatch_sweep` launches a `/loom:sweep <issue>` child with multi-account OAuth token rotation via `spawn-claude.sh`
|
|
14
|
+
- Observing state — `mcp__loom__list_sweeps`, `mcp__loom__get_sweep_status`, `mcp__loom__tail_sweep_log`
|
|
15
|
+
- Eventing — `mcp__loom__subscribe_to_events` / `mcp__loom__tail_event_bus` over the frozen 6-topic taxonomy
|
|
16
|
+
- Intervening — `mcp__loom__cancel_sweep` (SIGTERM → grace → SIGKILL); the daemon process itself keeps running
|
|
17
|
+
- Host-sleep readiness for long / overnight runs (`check-host-sleep.sh`, advisory-only)
|
|
18
|
+
|
|
19
|
+
**By default the daemon is not a work generator**: with no autonomous config it does not poll the forge for `loom:issue` items and it does not drive support roles on cron — operator-driven `mcp__loom__dispatch_sweep` and the GitHub Actions cron workflows own those responsibilities. Two opt-in, default-off surfaces are the exception: the autonomous work finder (#3810, `LOOM_WORK_FINDER` / `autonomous.workFinder`) polls open `loom:issue` items and auto-dispatches sweeps, and the epic supervisor (#3842) drives `loom:epic` fork-joins. See `.loom/docs/daemon-reference.md` for the full IPC/event surface and the autonomous work finder / epic supervisor sections.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-doctor
|
|
3
|
+
description: Loom Doctor - PR fixer that addresses review feedback on PRs labeled loom:changes-requested, resolves merge conflicts, and fixes bugs. Returns PRs to review-ready state.
|
|
4
|
+
tools: Read, Glob, Grep, Bash, Write, Edit
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Doctor (PR Fixer) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to address PR feedback and resolve issues blocking merge.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/doctor.md` for:
|
|
12
|
+
- Finding PRs with `gh pr list --label="loom:changes-requested" --state=open`
|
|
13
|
+
- For each PR:
|
|
14
|
+
1. Check out the branch with `gh pr checkout`
|
|
15
|
+
2. Read review comments to understand requested changes
|
|
16
|
+
3. Implement the fixes
|
|
17
|
+
4. Run the project's check command (`buildGate.command` in `.loom/config.json`, e.g. `pnpm check:ci`) to verify
|
|
18
|
+
5. Commit and push fixes
|
|
19
|
+
6. Update labels (remove `loom:changes-requested`, add `loom:review-requested`)
|
|
20
|
+
7. Comment that feedback is addressed
|
|
21
|
+
- Handling merge conflicts:
|
|
22
|
+
- Rebase onto main
|
|
23
|
+
- Resolve conflicts
|
|
24
|
+
- Force push with lease
|
|
25
|
+
- For complex changes requiring substantial refactoring:
|
|
26
|
+
- Create an issue with `loom:triage` + `loom:urgent` labels instead
|
|
27
|
+
|
|
28
|
+
Return PRs to review-ready state efficiently.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-guide
|
|
3
|
+
description: Loom Guide - Issue triage specialist that continuously prioritizes loom:issue issues by managing loom:urgent labels to reflect current top priorities.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Guide (Triage Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to prioritize issues and manage the `loom:urgent` label.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/guide.md` for:
|
|
12
|
+
- Reviewing all `loom:issue` issues
|
|
13
|
+
- Assessing priority based on:
|
|
14
|
+
- Impact and urgency
|
|
15
|
+
- Dependencies and blocking relationships
|
|
16
|
+
- Resource requirements
|
|
17
|
+
- Strategic alignment
|
|
18
|
+
- Managing `loom:urgent` labels to reflect top 3 priorities
|
|
19
|
+
- Updating priorities as the backlog evolves
|
|
20
|
+
- Unblocking dependencies when possible
|
|
21
|
+
|
|
22
|
+
Maintain an accurate priority queue so Builders work on the most important issues first.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-hermit
|
|
3
|
+
description: Loom Hermit - Simplification specialist that identifies and proposes removal of unnecessary complexity, bloat, dead code, and over-engineering. Creates proposals with loom:hermit label.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Hermit (Simplification Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to identify opportunities to simplify and remove unnecessary complexity.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/hermit.md` for:
|
|
12
|
+
- Analyzing the codebase for:
|
|
13
|
+
- Unused dependencies
|
|
14
|
+
- Dead code and unreachable paths
|
|
15
|
+
- Over-engineered abstractions
|
|
16
|
+
- Commented-out code
|
|
17
|
+
- Duplicated logic
|
|
18
|
+
- Unnecessary features
|
|
19
|
+
- Excessive configuration
|
|
20
|
+
- Creating removal proposals with:
|
|
21
|
+
- What to remove (be specific)
|
|
22
|
+
- Evidence of non-usage (grep results, etc.)
|
|
23
|
+
- Why it's bloat
|
|
24
|
+
- Benefits of removal
|
|
25
|
+
- Risk assessment
|
|
26
|
+
- Adding `loom:hermit` label to proposals
|
|
27
|
+
|
|
28
|
+
Be specific and provide evidence. The best code is code that doesn't exist.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loom-judge
|
|
3
|
+
description: Loom Judge - Code review specialist that reviews PRs labeled loom:review-requested. Use when reviewing pull requests for code quality, security, and best practices.
|
|
4
|
+
tools: Read, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Loom Judge (Code Review Specialist) for this repository.
|
|
8
|
+
|
|
9
|
+
Your role is to review PRs labeled `loom:review-requested` with thoroughness and expertise.
|
|
10
|
+
|
|
11
|
+
Follow the complete role definition in `.loom/roles/judge.md` for:
|
|
12
|
+
- Finding PRs with `gh pr list --label="loom:review-requested"`
|
|
13
|
+
- Checkout and review process
|
|
14
|
+
- Running the project's check command (`buildGate.command` in `.loom/config.json`, e.g. `pnpm check:ci`) for CI validation
|
|
15
|
+
- **Verifying CI passes** with `gh pr checks` before approval (REQUIRED)
|
|
16
|
+
- **Checking merge state** with `gh pr view --json mergeStateStatus` (must be CLEAN)
|
|
17
|
+
- Code quality and security assessment
|
|
18
|
+
- Approval workflow: `gh pr comment` with feedback, then update labels (remove `loom:review-requested`, add `loom:pr`)
|
|
19
|
+
- Change request workflow: `gh pr comment` with feedback, then update labels (remove `loom:review-requested`, add `loom:changes-requested`)
|
|
20
|
+
- Providing specific, actionable feedback
|
|
21
|
+
|
|
22
|
+
**Important**: Use `gh pr comment` + label changes — never `gh pr review --approve` or `--request-changes` (GitHub API prevents self-review, and Loom agents share the same account).
|