@nurix/etna 0.19.42 → 0.19.43
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/bin/etna.js +14 -0
- package/data/harness-index.json +5 -1
- package/data/harnesses/apollo/.prettierignore +29 -0
- package/data/harnesses/apollo/.prettierrc.json +3 -0
- package/data/harnesses/apollo/.vscode/settings.json +19 -0
- package/data/harnesses/apollo/CLAUDE.md +162 -0
- package/data/harnesses/apollo/agents/brainstorm.md +144 -0
- package/data/harnesses/apollo/agents/change-review.md +251 -0
- package/data/harnesses/apollo/agents/lld-mode.md +56 -0
- package/data/harnesses/apollo/agents/maintenance.md +229 -0
- package/data/harnesses/apollo/agents/performance-review.md +223 -0
- package/data/harnesses/apollo/agents/retro.md +46 -0
- package/data/harnesses/apollo/codex/agents/brainstorm.toml +142 -0
- package/data/harnesses/apollo/codex/agents/change-review.toml +249 -0
- package/data/harnesses/apollo/codex/agents/lld-mode.toml +52 -0
- package/data/harnesses/apollo/codex/agents/maintenance.toml +228 -0
- package/data/harnesses/apollo/codex/agents/performance-review.toml +222 -0
- package/data/harnesses/apollo/codex/agents/retro.toml +45 -0
- package/data/harnesses/apollo/docs/README.md +28 -0
- package/data/harnesses/apollo/docs/history/CHANGELOG.md +26 -0
- package/data/harnesses/apollo/docs/history/backlog.md +19 -0
- package/data/harnesses/apollo/docs/memory/main.md +15 -0
- package/data/harnesses/apollo/docs/structure.md +54 -0
- package/data/harnesses/apollo/harness.json +18 -0
- package/data/harnesses/apollo/hooks/generate-ownership-index.mjs +148 -0
- package/data/harnesses/apollo/hooks/hooks.json +16 -0
- package/data/harnesses/apollo/rules/changelog.md +19 -0
- package/data/harnesses/apollo/rules/database.md +123 -0
- package/data/harnesses/apollo/rules/express.md +33 -0
- package/data/harnesses/apollo/rules/frontend.md +32 -0
- package/data/harnesses/apollo/rules/general.md +62 -0
- package/data/harnesses/apollo/rules/nomenclature.md +34 -0
- package/data/harnesses/apollo/rules/pnpm.md +57 -0
- package/data/harnesses/apollo/rules/testing.md +23 -0
- package/data/harnesses/apollo/rules/verification.md +67 -0
- package/data/harnesses/apollo/skills/boundary/SKILL.md +69 -0
- package/data/harnesses/apollo/skills/boundary/references/index.md +16 -0
- package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +99 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +81 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +55 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +93 -0
- package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +87 -0
- package/data/harnesses/apollo/skills/brainstorm/README.md +56 -0
- package/data/harnesses/apollo/skills/brainstorm/SKILL.md +173 -0
- package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +98 -0
- package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +86 -0
- package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +186 -0
- package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +460 -0
- package/data/harnesses/apollo/skills/design/SKILL.md +100 -0
- package/data/harnesses/apollo/skills/design/components/charts.md +76 -0
- package/data/harnesses/apollo/skills/design/components/collections.md +132 -0
- package/data/harnesses/apollo/skills/design/components/feedback.md +47 -0
- package/data/harnesses/apollo/skills/design/components/hooks.md +35 -0
- package/data/harnesses/apollo/skills/design/components/index.md +143 -0
- package/data/harnesses/apollo/skills/design/components/inputs.md +327 -0
- package/data/harnesses/apollo/skills/design/components/layout.md +52 -0
- package/data/harnesses/apollo/skills/design/components/media.md +66 -0
- package/data/harnesses/apollo/skills/design/components/motion.md +82 -0
- package/data/harnesses/apollo/skills/design/components/navigation.md +29 -0
- package/data/harnesses/apollo/skills/design/components/overlays.md +72 -0
- package/data/harnesses/apollo/skills/design/components/setup.md +40 -0
- package/data/harnesses/apollo/skills/design/components/typography.md +46 -0
- package/data/harnesses/apollo/skills/design/components/utils.md +37 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +38 -0
- package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +38 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +33 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
- package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
- package/data/harnesses/apollo/skills/design/data/charts/census.csv +58 -0
- package/data/harnesses/apollo/skills/design/data/checklists/browse.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +20 -0
- package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/grid.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/queue.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +21 -0
- package/data/harnesses/apollo/skills/design/data/checklists/settings.md +21 -0
- package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +68 -0
- package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +63 -0
- package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +60 -0
- package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +78 -0
- package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +62 -0
- package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +65 -0
- package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +91 -0
- package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +90 -0
- package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +89 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +87 -0
- package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
- package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
- package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
- package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
- package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
- package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
- package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
- package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
- package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
- package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
- package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
- package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
- package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
- package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +16 -0
- package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +16 -0
- package/data/harnesses/apollo/skills/design/data/iconography.md +199 -0
- package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +18 -0
- package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
- package/data/harnesses/apollo/skills/design/data/tells.csv +34 -0
- package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
- package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +17 -0
- package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +29 -0
- package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +29 -0
- package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +179 -0
- package/data/harnesses/apollo/skills/design/design-md/index.csv +67 -0
- package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +207 -0
- package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/apple.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/binance.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cal.md +209 -0
- package/data/harnesses/apollo/skills/design/design-md/library/clay.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/composio.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/expo.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/figma.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/framer.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +205 -0
- package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/meta.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +210 -0
- package/data/harnesses/apollo/skills/design/design-md/library/miro.md +209 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/notion.md +204 -0
- package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +215 -0
- package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +213 -0
- package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +216 -0
- package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +218 -0
- package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +214 -0
- package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/resend.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +203 -0
- package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +200 -0
- package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +201 -0
- package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/slack.md +202 -0
- package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +206 -0
- package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +194 -0
- package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +193 -0
- package/data/harnesses/apollo/skills/design/design-md/library/uber.md +195 -0
- package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +195 -0
- package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/warp.md +196 -0
- package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/wired.md +197 -0
- package/data/harnesses/apollo/skills/design/design-md/library/wise.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +199 -0
- package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +198 -0
- package/data/harnesses/apollo/skills/design/design-md/nurix.md +214 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +184 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +216 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +211 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +212 -0
- package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +216 -0
- package/data/harnesses/apollo/skills/design/references/compose.md +23 -0
- package/data/harnesses/apollo/skills/design/references/content.md +28 -0
- package/data/harnesses/apollo/skills/design/references/emission.md +21 -0
- package/data/harnesses/apollo/skills/design/references/existing-apps.md +27 -0
- package/data/harnesses/apollo/skills/design/references/intake.md +36 -0
- package/data/harnesses/apollo/skills/design/references/object-pass.md +24 -0
- package/data/harnesses/apollo/skills/design/references/ship-gate.md +29 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +195 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +49 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +44 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +48 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +42 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +46 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +41 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +48 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +45 -0
- package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +40 -0
- package/data/harnesses/apollo/skills/design/scripts/README-validator.md +27 -0
- package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +596 -0
- package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +1198 -0
- package/data/harnesses/apollo/skills/documentation/SKILL.md +132 -0
- package/data/harnesses/apollo/skills/documentation/references/examples.md +279 -0
- package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +44 -0
- package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +49 -0
- package/data/harnesses/apollo/skills/documentation/references/style-guide.md +351 -0
- package/data/harnesses/apollo/skills/documentation/references/untemplated.md +38 -0
- package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +140 -0
- package/data/harnesses/apollo/skills/documentation/templates/Readme.md +32 -0
- package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +20 -0
- package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +121 -0
- package/data/harnesses/apollo/skills/documentation/templates/backlog.md +33 -0
- package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +79 -0
- package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +57 -0
- package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +41 -0
- package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +72 -0
- package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +30 -0
- package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +15 -0
- package/data/harnesses/apollo/skills/documentation/templates/feature.md +149 -0
- package/data/harnesses/apollo/skills/documentation/templates/glossary.md +11 -0
- package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +25 -0
- package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +34 -0
- package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +11 -0
- package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +36 -0
- package/data/harnesses/apollo/skills/documentation/templates/plan.md +71 -0
- package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +37 -0
- package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +104 -0
- package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +27 -0
- package/data/harnesses/apollo/skills/documentation/templates/structure.md +65 -0
- package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +32 -0
- package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +29 -0
- package/data/harnesses/apollo/skills/test-plan/SKILL.md +83 -0
- package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +451 -0
- package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +214 -0
- package/data/harnesses/code/agents/maintenance.md +2 -2
- package/data/harnesses/code/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/code/harness.json +3 -2
- package/data/harnesses/delivery/agents/maintenance.md +2 -2
- package/data/harnesses/delivery/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/delivery/harness.json +3 -2
- package/data/harnesses/discover/harness.json +2 -1
- package/data/harnesses/discussion/harness.json +1 -0
- package/data/harnesses/etna/agents/maintenance.md +2 -2
- package/data/harnesses/etna/codex/agents/maintenance.toml +2 -2
- package/data/harnesses/etna/harness.json +3 -2
- package/data/harnesses/hr/harness.json +1 -0
- package/data/harnesses/kb-agi/harness.json +1 -0
- package/package.json +2 -2
package/bin/etna.js
CHANGED
|
@@ -488,6 +488,20 @@ async function installHarness(harnessName, harnesses) {
|
|
|
488
488
|
installed.push(`${rel} → ./${rel}`);
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
+
// Seed files listed in harness.json's `seeds` (e.g. a pre-baked docs/ scaffold). Same
|
|
492
|
+
// project-root landing as `files`, opposite ownership: a seed is written only when its
|
|
493
|
+
// path is absent. Once present it is the project's living copy — a refresh never
|
|
494
|
+
// overwrites it and never prunes it.
|
|
495
|
+
for (const rel of harnessMeta.seeds || []) {
|
|
496
|
+
const src = join(bundledHarnessDir, rel);
|
|
497
|
+
if (!existsSync(src)) continue;
|
|
498
|
+
const dest = join(targetDir, rel);
|
|
499
|
+
if (existsSync(dest)) continue;
|
|
500
|
+
mkdirSync(dirname(dest), { recursive: true });
|
|
501
|
+
cpSync(src, dest, { recursive: true });
|
|
502
|
+
installed.push(`${rel} → ./${rel} (seeded)`);
|
|
503
|
+
}
|
|
504
|
+
|
|
491
505
|
// Retire hooks earlier harness versions shipped before merging, so the additive merge
|
|
492
506
|
// never resurrects an entry pointing at a script this bundle no longer carries.
|
|
493
507
|
for (const r of retireOldHooks(targetDir)) notices.push(`removed ${r}`);
|
package/data/harness-index.json
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"fingerprint": "
|
|
2
|
+
"fingerprint": "4d6e06e37895",
|
|
3
3
|
"harnesses": {
|
|
4
|
+
"apollo": {
|
|
5
|
+
"plugin": "apollo",
|
|
6
|
+
"description": "the pre-baked `code` harness, built for Apollo Studio exports"
|
|
7
|
+
},
|
|
4
8
|
"code": {
|
|
5
9
|
"plugin": "code",
|
|
6
10
|
"description": "the foundation every Nurix project starts with"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Dependencies & build output
|
|
2
|
+
node_modules
|
|
3
|
+
dist
|
|
4
|
+
build
|
|
5
|
+
|
|
6
|
+
# Lockfiles
|
|
7
|
+
pnpm-lock.yaml
|
|
8
|
+
package-lock.json
|
|
9
|
+
yarn.lock
|
|
10
|
+
|
|
11
|
+
# Harness-managed — the installer overwrites all of these, so formatting them is churn
|
|
12
|
+
# that comes straight back on the next `npx @nurix/etna`.
|
|
13
|
+
.claude
|
|
14
|
+
.codex
|
|
15
|
+
.agents
|
|
16
|
+
CLAUDE.md
|
|
17
|
+
AGENTS.md
|
|
18
|
+
|
|
19
|
+
# Frozen records — a plan, changelog entry, or migration runbook is a point-in-time
|
|
20
|
+
# artifact that is never edited after it freezes. Reformatting one is an edit, and the
|
|
21
|
+
# `maintenance` agent is forbidden from making it — so a format gate over this tree is
|
|
22
|
+
# a demand nothing in the repo is allowed to satisfy.
|
|
23
|
+
docs/history
|
|
24
|
+
|
|
25
|
+
# Source catalogs — authored markdown; prettier collapses template/example blocks
|
|
26
|
+
skills
|
|
27
|
+
rules
|
|
28
|
+
agents
|
|
29
|
+
harness
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Markdown: Prettier unwraps prose to one logical line per paragraph
|
|
3
|
+
// (see .prettierrc → proseWrap:never) on save; the editor soft-wraps for
|
|
4
|
+
// reading, so no hard line breaks get baked into the source.
|
|
5
|
+
"[markdown]": {
|
|
6
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
|
7
|
+
"editor.formatOnSave": true,
|
|
8
|
+
"editor.wordWrap": "on"
|
|
9
|
+
},
|
|
10
|
+
// Hide harness-authoring scaffolding from the file explorer
|
|
11
|
+
"files.exclude": {
|
|
12
|
+
".claude": true,
|
|
13
|
+
".vscode": true,
|
|
14
|
+
".agents": true,
|
|
15
|
+
".codex": true,
|
|
16
|
+
"**/node_modules": true,
|
|
17
|
+
"**/apollo.service.json": true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# Agent Instructions
|
|
2
|
+
|
|
3
|
+
How AI coding agents — any vendor, any runtime — work on this project. Rules are runtime-neutral: a rule that depends on a capability (sub-agent dispatch, browser tools, context injection, slash commands) applies only if the runtime has it, and states its fallback. Rules marked **[override]** deliberately replace a runtime default — in a conflict, the rule here wins.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Maintenance
|
|
8
|
+
|
|
9
|
+
**Baseline first**: if `docs/structure.md` lacks a `harness-version` frontmatter marker, or it is behind the `version` in `.claude/harness.json`, invoke the `maintenance` agent before taking up the user's first ask — tell the user, let the agent run, then proceed.
|
|
10
|
+
|
|
11
|
+
Invoke the `maintenance` agent whenever the docs look like they need it — not just at first setup: a missing `docs/structure.md` (the repo isn't reconciled — baseline before applying anything below), a `harness-version` marker behind the installed version, docs contradicting code, unowned source paths, or drift noticed while working. Never reconcile these by hand — the agent auto-selects its mode (baseline when the marker is missing or behind, coherence audit otherwise) and hands back; if it returns a follow-up (typically the module proposal), re-invoke it to finish. Each component's internals live in the component, not here.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Getting Started
|
|
16
|
+
|
|
17
|
+
- Read **[`docs/structure.md`](docs/structure.md)** for the documentation map and folder authority (architecture, features, operations)
|
|
18
|
+
- Read **[`docs/memory/`](docs/memory/)** for agent memory files (one per agent)
|
|
19
|
+
- Prefer `docs/` over `README.md` — docs/ is canonical for agents; check the README only when docs/ lacks a setup detail
|
|
20
|
+
- Check **[`package.json`](package.json)** for available scripts. Detect the package manager from the lockfile — see `.claude/rules/general.md`; don't hardcode one.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Workflows
|
|
25
|
+
|
|
26
|
+
Three peer modes, then a verification gate and a Completion step — enter wherever the user's thinking already is. Each mode is implemented by an agent + skill; the behavioural detail lives in those files, not here.
|
|
27
|
+
|
|
28
|
+
| Mode | Enter when | Implemented by | Exits to |
|
|
29
|
+
| --- | --- | --- | --- |
|
|
30
|
+
| **Brainstorming** | explicit ask (`/brainstorm start`); or offer a session — never auto-enter — when the user brings a large piece of work (name what makes it big) or an utterance contradicts a recorded pillar (name the principle) | `brainstorm` agent + skill | LLD, Plan, or close + harvest |
|
|
31
|
+
| **LLD** (low-level design) | new feature work | `lld-mode` agent + `documentation` skill | Plan |
|
|
32
|
+
| **Plan** | an LLD is approved | `documentation` skill → `docs/history/plans/YYYY-MM-DD-{slug}.md` | Verification gate → Completion |
|
|
33
|
+
|
|
34
|
+
> Brainstorm entry needs a **basis** — a reference document or a one-shot brain dump; drip-sized asks (a bug fix, one button) are too small and get redirected. A **pillar** is a recorded strategic principle from a past brainstorm: in-progress sessions live under `docs/research/`, harvested ones under `docs/history/brainstorms/`, harvested doctrine under `docs/architecture/`. The LLD is the feature doc itself — `docs/features/{feature}.md`, design intent first, extended in place at Completion.
|
|
35
|
+
|
|
36
|
+
**On Plan Completion:**
|
|
37
|
+
|
|
38
|
+
1. **The verification gate passes first** — user-triggered: when implementation completes, report it and offer the gate; never run it unbidden. It requires the plan's Test Obligations ledger to exist (proof the plan gates ran) and discharges every row, driving the real surface before pinning tests — `.claude/rules/verification.md`. A plan with outstanding obligations stays open, whatever the code does.
|
|
39
|
+
2. Freeze the plan — `Status: Complete`, fill the Completed date. The file is now frozen.
|
|
40
|
+
3. Flip the feature LLD to `status: active`; extend it in place with the how-it-works sections; confirm its `owns:` globs against the actual code.
|
|
41
|
+
4. Record the gate's results in the changelog entry, and confirm every section of `docs/tests/{feature}.md` carries its `Pinned:` trace — the checklist itself is authored at the gate (step 1), not written up afterwards.
|
|
42
|
+
|
|
43
|
+
**On Brainstorm Close** (when a session ends, not when a plan completes): close + harvest is the skill's `stop` procedure — converge, a user-approved harvest manifest, apply, then a uselessness test; conclusions disperse by scope (architecture docs, decision records, backlog), the record moves from `docs/research/{topic}-brainstorm/` to `docs/history/brainstorms/{topic}/`, and the user decides whether the moved folder is deleted or committed.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Ownership, Boundaries, Verification & Documentation
|
|
48
|
+
|
|
49
|
+
These four mechanisms work in tandem to keep the repo self-updating and to prevent half-finished changes: **ownership** routes an edit to the canonical doc before the code is touched, the **boundary** check reads both sides of every contract a change participates in so one side never ships alone, **verification** proves the change works in the product before it is called done, and **documentation** updates close the loop so the next session inherits the truth. Skipping any leg breaks the others.
|
|
50
|
+
|
|
51
|
+
### Ownership — route before editing
|
|
52
|
+
|
|
53
|
+
Which doc is canonical for which code paths is the **feature doc's own frontmatter**. A feature doc (flat in `docs/features/`) carries `owns:` (code-path globs — the only ownership key), `module:` (a bounded-context label, omitted when cross-cutting), `keywords:` (discovery), and `status:`. Code → doc ownership is the union of every feature doc's `owns:` globs, surfaced as the generated ownership index at session start. A module is tied to code by the `owns:` globs of the docs carrying its `module:` label — not a folder, not a separate map. Architecture docs describe cross-cutting patterns and own no files; operations docs describe procedures.
|
|
54
|
+
|
|
55
|
+
Before modifying code in an unfamiliar area:
|
|
56
|
+
|
|
57
|
+
1. Consult the **injected ownership index** (`glob → doc · module · keywords · status`). Match the path or topic to the owning feature doc and read it before changes. (No index in context ⇒ either the repo isn't reconciled — see Maintenance — or the runtime doesn't inject it — see Runtime Notes.)
|
|
58
|
+
2. If a `docs/memory/` file exists for the domain, read it for domain knowledge and failure modes.
|
|
59
|
+
|
|
60
|
+
The `lld-mode` agent checks for ownership conflicts during LLD research — feature docs whose `owns:` globs overlap at equal specificity. Resolve them in the LLD before proceeding.
|
|
61
|
+
|
|
62
|
+
### Boundaries — check while changing
|
|
63
|
+
|
|
64
|
+
Boundaries are **diagnosed, not documented** — the `boundary` skill derives them fresh from source on every run (the definition and mechanism catalog live in the skill), so nothing is persisted that could go stale.
|
|
65
|
+
|
|
66
|
+
**Invoke the `boundary` skill after a plan is approved and before its first implementation step.** It parses the plan's Proposed Changes, reads the touched source, traces the consumers on the other side, and reports severity-ranked violations with suggested amendments and a pass/block verdict — in chat, read-only. Fold the amendments into the plan before coding. For non-plan edits in contract-heavy code (db schema, wire envelopes, auth, events, env/config), run the same diagnostic scoped to the diff.
|
|
67
|
+
|
|
68
|
+
### Test obligations — specify before implementing
|
|
69
|
+
|
|
70
|
+
**After `boundary` passes and its amendments are folded, invoke the `test-plan` skill** — same plan gate, ordered second. It derives the tests the plan owes from its Proposed Changes and the owning LLD, and writes the **Test Obligations** ledger into the plan (one row per promised behavior: layer · target file · oracle · fixtures). It writes no test files — the ledger is what the verification gate discharges, and because it lives in the plan file it survives dispatch to an executor that sees only the plan. On a boundary **BLOCK** it does not run — re-plan first. Layer rules and the e2e altitude gate live in the skill.
|
|
71
|
+
|
|
72
|
+
### Verification — prove before completing
|
|
73
|
+
|
|
74
|
+
**Deferring tests is what keeps the build loop fast, and the ledger is what makes deferring safe.** A plan-driven build writes no new test files while the code is taking shape; obligations accumulate in the plan and are discharged in one pass at the **verification gate** — user-triggered, offered when implementation completes, mandatory before `Status: Complete`. The gate, the two regimes, the mid-loop rules, and what earns a durable test are `.claude/rules/verification.md`.
|
|
75
|
+
|
|
76
|
+
- **Only a plan may defer.** A bug fix in shipped behavior and any ad-hoc change ship their test immediately — deferral needs a ledger and a gate, and non-plan work has neither.
|
|
77
|
+
- **The checklist is the gate's first artifact, not its last.** Opening the gate derives or updates `docs/tests/{feature}.md` from the ledger and the LLD's promises (the `documentation` skill's `templates/behavioral-checklist.md`). It is the script rung 1 drives and the source rung 2's tests are drawn from — written after the driving it would be a report, and the tests would have no stated behavior to trace to.
|
|
78
|
+
- **Drive the real surface before pinning tests.** Browser automation for web UI, the real CLI, HTTP against the running worker; the suite then pins the checklist assertions that must not regress, and each section records which test now guards it.
|
|
79
|
+
- **The gate's verdict is never delegated** — a sub-agent's summary is not verifiable ground truth (the Fan-out guardrail), and browser work is main-session-only where Runtime Notes say so.
|
|
80
|
+
|
|
81
|
+
### Documentation — close the loop
|
|
82
|
+
|
|
83
|
+
- **Every markdown document goes through the `documentation` skill.** Before creating or substantively editing any `.md` document — a doc, a README, an index, a record — invoke the `documentation` skill and apply its templates and `references/style-guide.md`: truth documents stay present-tense; history lives only in `docs/history/` records.
|
|
84
|
+
- **[override]** Keep `docs/` updated when code changes affect documented behavior. This file is the standing request for those docs: creating and updating them is part of the work, even if the runtime defaults to never creating documentation files unprompted.
|
|
85
|
+
- After plan completion **[override]**: write the `docs/history/changelog/` entry as a **draft** immediately, while the context is fresh — no confirmation needed — and append its `docs/history/CHANGELOG.md` row; the commit fills what the draft left open and freezes it. Non-plan work needs no separate prompt: every non-exempt commit carries its own entry (the `changelog` rule).
|
|
86
|
+
- When moving or renaming source files: update the `owns:` globs of the feature doc that owns them so the generated ownership index stays accurate. A new doc that owns code declares its paths in its own `owns:` frontmatter — there is no separate map to update.
|
|
87
|
+
- `docs/structure.md` is the authority on what belongs where — read it before adding or moving a doc; don't restate it here. One canonical source per topic — link, don't copy. Only `CLAUDE.md`, `AGENTS.md`, and `README.md` live at the repo root.
|
|
88
|
+
|
|
89
|
+
> Agents and skills live under `.claude/agents/` and `.claude/skills/`. Their triggers are model-invoked — refer to each component's frontmatter, not a registry table here. Runtimes that can't invoke them natively: see Runtime Notes.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Project Memory
|
|
94
|
+
|
|
95
|
+
Project-specific learnings live in `docs/memory/` (git-tracked). Cross-project user preferences live in the runtime's user-level memory store, if it has one (untracked; paths in Runtime Notes).
|
|
96
|
+
|
|
97
|
+
| File | Owner | Contents |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
| `docs/memory/main.md` | Main agent | Project-wide patterns, conventions confirmed in this codebase, recurring failure modes, decisions whose rationale isn't obvious from the code |
|
|
100
|
+
| `docs/memory/{agent-name}.md` | The named sub-agent | Strategy memory for that agent — how to be more effective on this project (research patterns, taxonomy, ownership conflict zones). Never user-centric. |
|
|
101
|
+
| Runtime user-level memory (paths in Runtime Notes) | The runtime's auto-memory system | User preferences, role, communication style, cross-project habits |
|
|
102
|
+
|
|
103
|
+
When recording a learning, ask: _is this true of this project, or true of this user?_ Project facts → `docs/memory/` (overriding any auto-memory default location); user facts → the runtime's user-level store. `docs/memory/main.md` is created on first write; append entries dated `## YYYY-MM-DD — {topic}`.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Changelog
|
|
108
|
+
|
|
109
|
+
The working session is the last holder of the refinement context that produced a change — asks, iterations, rejections, skill outcomes, discoveries. The changelog captures it; the `retro` agent distills it on demand. A commit marks the user's acceptance of the work it carries — for plan work, behavioral verification is the gate's job, and a mid-plan commit is a checkpoint (the `verification` rule). The `changelog` rule carries the trigger and the lifecycle; this is the policy:
|
|
110
|
+
|
|
111
|
+
- **Every non-mechanical commit is covered by an entry** at `docs/history/changelog/YYYY-MM-DD-{three-words}.md`, staged inside the commit it describes — whatever tool or session performs the commit — plus a row in `docs/history/CHANGELOG.md`. Format, required fields, and the closed exemption list are the `documentation` skill's `templates/changelog-entry.md`; the failure fields (rejected attempts, overridden skill output) and verbatim taste quotes are required, not optional — the entry's value concentrates there.
|
|
112
|
+
- **An entry may exist before its commit.** A plan reaching `Status: Complete` writes its entry as a **draft** immediately, while the context is fresh; the commit fills what the draft left open. **Immutability begins at commit, not creation** — a draft is mutable, a committed entry never is, and a correction is a new entry that links back. Doc-health passes skip the genre.
|
|
113
|
+
- **A commit is the smallest unit an entry may describe**; above that the mapping is judgment. Work exceeding a draft's scope gets a *second* entry rather than stretching the first.
|
|
114
|
+
- **Distillation is the `retro` agent** — run on demand (before a brainstorm or LLD, before a new project, after a refinement arc), it converts accumulated entries into a typed punch list (doc content, doc structure, skill evolution, pins, harness rules), appends actionable items to the backlog, and proposes only — application runs through the normal documentation loop.
|
|
115
|
+
|
|
116
|
+
**One-shot migrations are a different genre.** Work that runs **once** against a live system — a data backfill, a schema cutover, a dependency or harness upgrade rolled across repos — is a **migration runbook** at `docs/history/migrations/YYYY-MM-DD-{slug}.md` (template: the `documentation` skill's `templates/migration-runbook.md`), authored **before** execution and outcome-stamped after. A changelog entry says what changed in the repo; a runbook says what was executed against the world and how to verify or undo it. A repeatable procedure is neither — that is `docs/operations/`. When a runbook defers targets, it records **why** and the **trigger to re-evaluate them**, so the next run re-checks rather than inheriting the skip.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Out-of-Scope Discovery
|
|
121
|
+
|
|
122
|
+
When a plan's implementation surfaces work that is important but outside the plan's scope and is not being done now (a pre-existing bug being fixed on the spot is the bug-fix regime — the `verification` rule — not a backlog item):
|
|
123
|
+
|
|
124
|
+
- Append it to `docs/history/backlog.md` under the appropriate priority (P0-P3)
|
|
125
|
+
- Format: `- **[P1]** Description — discovered by [plan-name or agent-name]`
|
|
126
|
+
- Do NOT ask permission. Just append and mention it in the reply.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Guardrails & Defaults
|
|
131
|
+
|
|
132
|
+
Defaults — ❌ prohibitions hold unless the user explicitly asks otherwise; ✅ and ⚠️ items are standing policy:
|
|
133
|
+
|
|
134
|
+
- ✅ **Verification — batched at a gate, not continuous.** A plan-driven build loop ships code without new test files; the tests and the driven checks land together at the **verification gate** — user-triggered, offered when implementation completes, mandatory before a plan reaches `Status: Complete`. The gate, the regimes, and the mechanism ladder are `.claude/rules/verification.md`; framework, test-tree placement, and shared fixtures are `.claude/rules/testing.md` — the repo's existing runner and layout always win.
|
|
135
|
+
- **Only a plan defers**: a bug fix in shipped behavior and any ad-hoc change ship their test immediately — a regression test that fails before the change and passes after.
|
|
136
|
+
- **Drive before pinning**: prove the change in the real product first — browser automation for web UI, the real CLI, HTTP against the running worker — then pin as suite tests only the behaviors that must not regress.
|
|
137
|
+
- **Discipline**: run the affected part of the suite at the gate and report results honestly. Never weaken, skip, or delete a test to mask an unexplained failure — when a plan or LLD intentionally changes behavior, updating the affected tests to the new contract is part of the change.
|
|
138
|
+
- **Throwaway checks are not tests**: temporary verification scripts go to scratch space and are deleted, never committed into the test tree.
|
|
139
|
+
- ❌ **Dependencies** – Never upgrade frameworks, libraries, or dependencies.
|
|
140
|
+
- ❌ **Compatibility** – Never maintain backward compatibility unless specified.
|
|
141
|
+
- ❌ **Branches & Worktrees [override]** – Never self-create git branches or worktrees; commit straight to the checked-out branch. This replaces any built-in "branch first on the default branch" default. Exception: when the user asks for a pull request, create the branch the PR requires before committing its changes.
|
|
142
|
+
- ❌ **Protected Files** – Before editing, if `docs/operations/protected-files.md` exists, read it and never modify any path it lists; also never modify `AGENTS.md` or the `protected-files.md` file itself.
|
|
143
|
+
- ✅ **Browser Automation** – If the runtime provides browser automation, use it freely; no need to ask first. If it doesn't — or the executing agent can't hold the browser connection (see Runtime Notes) — return a browser-verification checklist (URLs, actions, expected outcomes) for the orchestrating session or the user to run.
|
|
144
|
+
- ✅ **Fan-out is a tool, not a default** — the main session does the work and its own reasoning; a delegated result comes back as a summary, not verifiable ground truth. Delegate **only when** the work is large, independent, or repetitive enough that a self-contained hand-off (the sub-agent sees none of the conversation) costs less than the work — broad research, wide sweeps, audits — and run independent delegations in parallel. **Never delegate judgment by reflex**: a second opinion is for a high-stakes call or an explicit request. No dispatch mechanism ⇒ inline.
|
|
145
|
+
- ⚠️ **Plans** – Plans are created directly in `docs/history/plans/` (see Workflows). Once `Status: Complete` or `Status: Abandoned`, the file is frozen — never edited. Abandoning a plan whose code was committed first converts its undischarged Test Obligations into backlog items (the `verification` rule). If scope changes after completion, write a new dated plan that links back to the old one.
|
|
146
|
+
- ⚠️ **Tool Issues** – If any CLI tool, shell alias, or MCP tool behaves unexpectedly (syntax errors, silent failures, wrong defaults), report the exact tool name, command, and error to the user so they can fix or remove the underlying library.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## File Structure
|
|
151
|
+
|
|
152
|
+
- Add a file-path header comment at the top of each source file, in the file's native comment syntax — `// src/modules/example.js - Module for handling user authentication`. Place it below any shebang line; skip formats with no comment syntax (JSON, lockfiles) and generated files.
|
|
153
|
+
- Add a 1-line description above each function whose purpose isn't fully evident from its name and signature: `// Extract JWT token from request based on endpoint type`. A comment that restates the name is noise. No inline comments that restate obvious code; no commented-out code — if a block needs a comment to be understandable, refactor for clarity instead.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Runtime Notes
|
|
158
|
+
|
|
159
|
+
Everything above is runtime-neutral. This section is the only place runtime- or vendor-specific facts may live; re-audit it whenever a runtime ships new models or tools. Lint: nothing outside this section may name a model, a vendor product, or a runtime-built-in tool — exempt are repo-relative `.claude/**` component paths (shipped in this repo, readable by any runtime) and protocol names (e.g. MCP).
|
|
160
|
+
|
|
161
|
+
- **Claude Code**: sub-agent dispatch is the Agent tool; sub-agents can run skills and spawn their own sub-agents (probe-verified; re-verify on runtime updates), but cannot reliably hold the browser connection (the "can't hold the browser connection" condition the Browser Automation guardrail refers to) — browser work is Chrome CDP ("Claude in Chrome"), main session only. The user-level memory store is `~/.claude/` (auto-memory under `~/.claude/projects/...`). The ownership index and skill/agent descriptions are injected at session start; skills are invoked as slash commands (e.g. `/brainstorm start`). Dispatch tiers: mechanical fan-out runs on the cheapest capable tier; a user-requested second opinion takes the strongest — pick by capability at dispatch, since model names go stale.
|
|
162
|
+
- **Runtimes without native component support** (AGENTS.md readers, etc.): read `.claude/agents/<name>.md` and each skill's `.claude/skills/<name>/SKILL.md` (plus its `references/`) and follow them inline; derive the ownership index by scanning `docs/features/` frontmatter.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm
|
|
3
|
+
description: The brainstorm twin — the paper-owning half of the brainstorm capability. Dispatched at session gates (start, on demand, pause, stop) by the `brainstorm` skill, never self-triggered and never conversing with the user. Scribe (distills the ops capture ledger into the working surface), editor (recomposes the thesis whole, diffs surfaced), harvester (drives the stop pipeline — manifest, apply, uselessness test, move), blindspot analyst (cold-reads the surface for unknown unknowns behind a four-test quality gate — grounded, material, new, answerable). Consumes the detector script for mechanical integrity and audits the five semantic sources the detector cannot judge. Writes every working-surface file; the facilitator writes only ops/capture.md and sync-log dispatch lines.
|
|
4
|
+
tools: Read, Glob, Grep, Write, Edit, Bash, Task, Skill
|
|
5
|
+
model: opus
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Brainstorm Twin
|
|
9
|
+
|
|
10
|
+
You own the **paper** of a brainstorm session; the facilitator (the main loop running the
|
|
11
|
+
`brainstorm` skill) owns the conversation. You are dispatched at gates with a session-folder path,
|
|
12
|
+
a gate name, and a scope. You never talk to the user — anything needing their judgment goes back
|
|
13
|
+
in your final report for the facilitator to relay.
|
|
14
|
+
|
|
15
|
+
The format contract is the skill's `references/session-schema.md` (resolve it beside this harness:
|
|
16
|
+
`.claude/skills/brainstorm/references/` in a consumer repo, `skills/brainstorm/references/` in
|
|
17
|
+
etna; also read `references/doctrine.md` for the epistemics). The mechanical half is the detector:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
node <skill>/scripts/detector.mjs <session-folder> [--gate=manifest|move] [--json]
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Run it at the start of every dispatch and again before you return. If node or the script is
|
|
24
|
+
unavailable, say so loudly in your report and run the checks by hand from the schema — a missing
|
|
25
|
+
detector is a flagged fact, never a silent skip.
|
|
26
|
+
|
|
27
|
+
## The write protocol you enforce
|
|
28
|
+
|
|
29
|
+
One writer per file. You write `state.md`, `thesis.md`, `forks.md`, `ledger.md`, `fragments/`,
|
|
30
|
+
manifest, and your own sync-log **result** lines. You never write `ops/capture.md` (the
|
|
31
|
+
facilitator's) or sync-log dispatch lines. The user may hand-edit anything: before rewriting any
|
|
32
|
+
file, read its current state in full and treat content you did not write as **first-class user
|
|
33
|
+
signal — fold it forward, never clobber it**. A hand-edit that contradicts the ledger is a design
|
|
34
|
+
question: file a fork, don't "fix" the file.
|
|
35
|
+
|
|
36
|
+
## Every dispatch, in order
|
|
37
|
+
|
|
38
|
+
1. **Detector first** — `--gate=session`. Fix what is yours to fix (scribe-calls, below); report
|
|
39
|
+
what isn't.
|
|
40
|
+
2. **Read the whole surface** plus every `ops/capture.md` entry since the last reconciled sync.
|
|
41
|
+
3. **Scribe pass** — distill new capture into the surface, per the doctrine's epistemic rules
|
|
42
|
+
(distilled never verbatim; examples as examples; no naked pointers; both sides captured).
|
|
43
|
+
Residue that doesn't warrant filing stays in ops — that is what ops is for.
|
|
44
|
+
4. **Semantic audit** — the five sources the detector cannot judge:
|
|
45
|
+
- **Cross-pillar contradiction** — across any two session files, `state.md` included (a state
|
|
46
|
+
file describing a session the pillars contradict is the historically strongest signal).
|
|
47
|
+
- **Aspect adequacy** — the detector checks that every mapped aspect *links* to content; you judge
|
|
48
|
+
whether the content actually covers it. Covered-in-name-only → a fork.
|
|
49
|
+
- **Basis drift** — decided divergence from `basis/` is fine; accidental divergence → a fork.
|
|
50
|
+
- **Tech conflicts** — anything violating the tech fragment (or the repo's `.claude/rules/`)
|
|
51
|
+
without a recorded deviation → a fork.
|
|
52
|
+
- **Self-containment** — read as the stranger you are (you were dispatched context-free; use
|
|
53
|
+
that): undefined terms, naked pointers, enumerations cited but never printed.
|
|
54
|
+
5. **The scribe-call / design-call line** — an edit whose resolution doesn't change the design
|
|
55
|
+
(wording, bookkeeping, printing an enumeration, glossing a term) you apply directly and list.
|
|
56
|
+
An edit whose resolution changes the idea becomes a fork (`Raised by: twin (S#)` — cite your
|
|
57
|
+
own sync id). Never route a design question through a direct edit.
|
|
58
|
+
6. **Editor pass** — recompose `thesis.md` whole (claim → argument → what changed), stamp
|
|
59
|
+
`Current as of:`, mirror the stamp into state.md `Last compose`, update the posture line.
|
|
60
|
+
Filing an insight must never push the session away from coherent: orphan evidence is a
|
|
61
|
+
scribe-note in your report, never a fork; free-floating insight may feed a thesis aspect.
|
|
62
|
+
7. **Close the log** — append your result line to `ops/sync-log.md`:
|
|
63
|
+
`S# → reconciled | <ISO datetime> | N edits · M new forks · K open · untouched: <aspects>`
|
|
64
|
+
(or `S# → failed | <ts> | <reason>` — never omit the line; an unlogged dispatch reads as a
|
|
65
|
+
fabricated one). The one-line report is also the last line of your reply, plus anything the
|
|
66
|
+
facilitator must relay (design questions raised, what the recompose changed). When several
|
|
67
|
+
audit sources fire at once, rank integrity findings (attribution without evidence, files
|
|
68
|
+
contradicting the state) above coverage and staleness — a record that lies about its own
|
|
69
|
+
process is worse than one that merely stalled.
|
|
70
|
+
|
|
71
|
+
## The blindspot pass (gate: on demand, scope: blindspot)
|
|
72
|
+
|
|
73
|
+
Dispatched when the user asks what they're missing, when the facilitator self-initiates at a
|
|
74
|
+
frame-settling moment (usually widening a reconcile dispatch's scope), or on the accepted
|
|
75
|
+
pre-converge offer. Run the standard dispatch order first so the surface is current, then
|
|
76
|
+
re-read the whole surface plus `basis/` cold, measured against the thesis's claim — the stated goal — never against
|
|
77
|
+
a generic checklist. The species that pay: an assumption the design rests on but never states; a
|
|
78
|
+
concern no aspect owns; two required properties that pull against each other with nothing
|
|
79
|
+
designing for either; a rule or path that can never fire; an ambiguity two files resolve
|
|
80
|
+
differently; a shape matching a failure already recorded in the basis or ledger.
|
|
81
|
+
|
|
82
|
+
**The quality gate — a candidate passes all four tests or dies unsurfaced.** The gate exists so
|
|
83
|
+
the user never over-replies to noise:
|
|
84
|
+
|
|
85
|
+
1. **Grounded** — it cites the specific surface or basis content that creates it. Raisable
|
|
86
|
+
against any project of this type without reading this folder → generic → dead.
|
|
87
|
+
2. **Material** — some plausible answer changes the thesis, a commitment, or the aspect map.
|
|
88
|
+
Every answer leaves the design unchanged → dead.
|
|
89
|
+
3. **New** — not a restatement of an open fork, a ledger decision or Declined line, or an
|
|
90
|
+
explicit park.
|
|
91
|
+
4. **Answerable** — resolvable by a decision or a named investigation, not "think harder
|
|
92
|
+
about X".
|
|
93
|
+
|
|
94
|
+
File each survivor as a fork (`Raised by: twin (S#)`, body opening `Blindspot:`) with a close
|
|
95
|
+
condition — at most five per pass, ranked by materiality; fewer survivors means surface fewer,
|
|
96
|
+
never pad. End your report with the survivors in relay shape (finding → why it's material here,
|
|
97
|
+
citing the creating content → what answering it would change) plus the kill line — e.g.
|
|
98
|
+
"killed 6: 4 generic, 1 restates F3, 1 immaterial" — so gate discipline stays auditable; the
|
|
99
|
+
facilitator's capture persists it. A killed candidate re-raised unchanged in a later pass stays
|
|
100
|
+
dead; new surface content that changes its gate verdict reopens it.
|
|
101
|
+
|
|
102
|
+
## The stop pipeline (gate: stop — multiple dispatches)
|
|
103
|
+
|
|
104
|
+
Stop is facilitator-orchestrated because approval belongs to the user; you execute each leg:
|
|
105
|
+
|
|
106
|
+
1. **Converge support + manifest build.** Final scribe/audit/compose as above, then run
|
|
107
|
+
`--gate=manifest`. While it fails (open forks, uncovered aspects, stale compose), report what
|
|
108
|
+
blocks — you do not build a manifest over a failing gate. When clean, write `ops/manifest.md`
|
|
109
|
+
(`Status: proposed`): route by scope per the skill's `references/harvest.md` — every parked
|
|
110
|
+
fork, every fragment, the consolidated source of truth. Return the manifest body for approval.
|
|
111
|
+
2. **Apply** (only after the facilitator reports approval; set `Status: approved` then work).
|
|
112
|
+
Read **both sides** of every destination before writing — the destination's current content is
|
|
113
|
+
a contract, not a blank page. Format each artifact via the `documentation` skill;
|
|
114
|
+
where the runtime can't invoke it, fall back to your own formatting **and record which path ran
|
|
115
|
+
in the manifest**. Set `Status: applied`. The apply is all-or-nothing and loud: if you cannot finish,
|
|
116
|
+
report exactly what applied and stop — the folder stays visibly unfinished and the user
|
|
117
|
+
restarts; never resume silently from a half-applied state.
|
|
118
|
+
3. **Uselessness test.** Spawn a **fresh, context-free cold reader** — an independent subagent
|
|
119
|
+
that inherits none of this session's context — whose prompt contains only the allowed-path list
|
|
120
|
+
(the manifest's destinations — never the session folder) and the instruction to reconstruct the
|
|
121
|
+
design: thesis, commitments, reasoning, declined branches. Grade its reconstruction against the
|
|
122
|
+
ledger and thesis. Gaps → record them in the manifest (`Result: fail`, named gaps), and the fixes
|
|
123
|
+
re-enter as a new manifest `Round` requiring fresh approval. Pass → record it. If the runtime
|
|
124
|
+
offers no subagent dispatch, report that the facilitator must dispatch the cold reader — you,
|
|
125
|
+
having read the folder, can no longer cold-read.
|
|
126
|
+
4. **Move.** Run `--gate=move`. When clean: delete `ops/` entirely, `git mv` the folder to
|
|
127
|
+
`docs/history/brainstorms/{topic}/`, set state `Status: harvested`, update both indexes
|
|
128
|
+
(`docs/research/Readme.md` row out, `docs/history/brainstorms/Readme.md` row in). End your
|
|
129
|
+
report with the offer the facilitator relays: **delete the moved folder, or commit it** — the
|
|
130
|
+
user decides; the design assumes deletion.
|
|
131
|
+
|
|
132
|
+
## Strategy memory
|
|
133
|
+
|
|
134
|
+
`docs/memory/brainstorm.md` (create on first write, entries dated `## YYYY-MM-DD — {topic}`):
|
|
135
|
+
how to facilitate *this repo* better — recurring audit findings, harvest destinations that keep
|
|
136
|
+
appearing, aspect-map patterns. Never session content, never user preferences.
|
|
137
|
+
|
|
138
|
+
## Degradations — flagged, never silent
|
|
139
|
+
|
|
140
|
+
- Detector unavailable → manual checks from the schema, loudly noted.
|
|
141
|
+
- `documentation` skill unavailable → own-format harvest, recorded in the manifest.
|
|
142
|
+
- Cold-reader spawn unavailable → hand the uselessness test back to the facilitator.
|
|
143
|
+
- Anything else broken → `S# → failed` in the log with the reason, and say so in your report.
|
|
144
|
+
A loud early failure the user fixes beats silent damage discovered after the folder is gone.
|