@jaimevalasek/aioson 1.6.0 → 1.7.2
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/CHANGELOG.md +74 -0
- package/README.md +729 -232
- package/docs/design-previews/pt.squarespace.com-homepage.html +889 -0
- package/docs/integrations/sdlc-genius-boundary.md +76 -0
- package/docs/integrations/sdlc-genius-eval-matrix.md +75 -0
- package/docs/integrations/sdlc-genius-install-checklist.md +93 -0
- package/docs/integrations/sdlc-genius-review-samples.md +86 -0
- package/docs/pt/README.md +3 -0
- package/docs/pt/agentes.md +1 -0
- package/docs/pt/comandos-cli.md +888 -2
- package/docs/pt/design-hybrid-forge.md +255 -6
- package/docs/pt/devlog-pipeline.md +270 -0
- package/docs/pt/fluxo-artefatos.md +178 -0
- package/docs/pt/hooks-session-guard.md +454 -0
- package/docs/pt/monitor-de-contexto.md +59 -5
- package/docs/pt/sdd-automation-scripts.md +557 -0
- package/docs/pt/site-forge.md +309 -0
- package/docs/pt/spec-learnings-pipeline.md +265 -0
- package/package.json +1 -1
- package/src/a2a/client.js +165 -0
- package/src/a2a/server.js +223 -0
- package/src/cli.js +235 -1
- package/src/commands/agent-audit.js +397 -0
- package/src/commands/agent-export-skill.js +229 -0
- package/src/commands/artifact-validate.js +189 -0
- package/src/commands/brief-gen.js +405 -0
- package/src/commands/brief-validate.js +65 -0
- package/src/commands/classify.js +256 -0
- package/src/commands/context-compact.js +49 -0
- package/src/commands/context-health.js +175 -0
- package/src/commands/context-monitor.js +71 -0
- package/src/commands/context-trim.js +177 -0
- package/src/commands/detect-test-runner.js +55 -0
- package/src/commands/devlog-export-brains.js +27 -0
- package/src/commands/devlog-process.js +292 -0
- package/src/commands/devlog-watch.js +131 -0
- package/src/commands/feature-close.js +165 -0
- package/src/commands/gate-check.js +228 -0
- package/src/commands/hooks-emit.js +253 -0
- package/src/commands/hooks-install.js +347 -0
- package/src/commands/learning-auto-promote.js +195 -0
- package/src/commands/learning-evolve.js +18 -9
- package/src/commands/learning-export.js +103 -0
- package/src/commands/learning-rollback.js +164 -0
- package/src/commands/live.js +25 -1
- package/src/commands/pattern-detect.js +33 -0
- package/src/commands/preflight-context.js +30 -0
- package/src/commands/preflight.js +208 -0
- package/src/commands/pulse-update.js +130 -0
- package/src/commands/runner-daemon.js +274 -0
- package/src/commands/runner-plan.js +70 -0
- package/src/commands/runner-queue-from-plan.js +166 -0
- package/src/commands/runner-queue.js +189 -0
- package/src/commands/runner-run.js +129 -0
- package/src/commands/runtime.js +47 -1
- package/src/commands/self-implement-loop.js +256 -0
- package/src/commands/session-guard.js +218 -0
- package/src/commands/sizing.js +165 -0
- package/src/commands/skill.js +65 -0
- package/src/commands/spec-checkpoint.js +177 -0
- package/src/commands/spec-status.js +79 -0
- package/src/commands/spec-sync.js +190 -0
- package/src/commands/spec-tasks.js +288 -0
- package/src/commands/squad-autorun.js +1220 -0
- package/src/commands/squad-bus.js +217 -0
- package/src/commands/squad-card.js +149 -0
- package/src/commands/squad-daemon.js +134 -0
- package/src/commands/squad-dependency-graph.js +164 -0
- package/src/commands/squad-review.js +106 -0
- package/src/commands/squad-scaffold.js +55 -0
- package/src/commands/squad-tool-register.js +157 -0
- package/src/commands/state-save.js +122 -0
- package/src/commands/update.js +2 -0
- package/src/commands/verify-gate.js +572 -0
- package/src/commands/workflow-execute.js +241 -0
- package/src/constants.js +22 -0
- package/src/install-profile.js +2 -2
- package/src/install-wizard.js +3 -2
- package/src/installer.js +6 -0
- package/src/lib/health-check.js +158 -0
- package/src/lib/hook-protocol.js +76 -0
- package/src/mcp/apps/squad-dashboard/app.js +163 -0
- package/src/mcp/apps/squad-dashboard/index.html +261 -0
- package/src/mcp/apps/squad-dashboard/mcp-manifest.json +23 -0
- package/src/mcp/resources/squad-state.js +130 -0
- package/src/preflight-engine.js +443 -0
- package/src/runner/cascade.js +97 -0
- package/src/runner/cli-launcher.js +109 -0
- package/src/runner/plan-importer.js +63 -0
- package/src/runner/queue-store.js +159 -0
- package/src/runtime-store.js +61 -3
- package/src/squad/agent-teams-adapter.js +264 -0
- package/src/squad/brief-validator.js +350 -0
- package/src/squad/bus-bridge.js +140 -0
- package/src/squad/context-compactor.js +265 -0
- package/src/squad/cross-ai-synthesizer.js +250 -0
- package/src/squad/hooks-generator.js +196 -0
- package/src/squad/inter-squad-events.js +175 -0
- package/src/squad/intra-bus.js +345 -0
- package/src/squad/learning-extractor.js +213 -0
- package/src/squad/pattern-detector.js +365 -0
- package/src/squad/preflight-context.js +296 -0
- package/src/squad/recovery-context.js +242 -71
- package/src/squad/reflection.js +365 -0
- package/src/squad/squad-scaffold.js +177 -0
- package/src/squad/state-manager.js +310 -0
- package/src/squad/task-decomposer.js +652 -0
- package/src/squad/verify-gate.js +303 -0
- package/src/updater.js +4 -5
- package/src/worker-runner.js +186 -1
- package/template/.aioson/agents/analyst.md +62 -1
- package/template/.aioson/agents/architect.md +61 -1
- package/template/.aioson/agents/copywriter.md +463 -0
- package/template/.aioson/agents/design-hybrid-forge.md +14 -0
- package/template/.aioson/agents/dev.md +271 -25
- package/template/.aioson/agents/deyvin.md +67 -8
- package/template/.aioson/agents/discovery-design-doc.md +44 -0
- package/template/.aioson/agents/genome.md +14 -0
- package/template/.aioson/agents/neo.md +83 -2
- package/template/.aioson/agents/orache.md +50 -4
- package/template/.aioson/agents/orchestrator.md +197 -1
- package/template/.aioson/agents/pm.md +35 -0
- package/template/.aioson/agents/product.md +50 -5
- package/template/.aioson/agents/profiler-enricher.md +14 -0
- package/template/.aioson/agents/profiler-forge.md +14 -0
- package/template/.aioson/agents/profiler-researcher.md +14 -0
- package/template/.aioson/agents/qa.md +273 -21
- package/template/.aioson/agents/setup.md +96 -10
- package/template/.aioson/agents/sheldon.md +131 -6
- package/template/.aioson/agents/site-forge.md +1753 -0
- package/template/.aioson/agents/squad.md +352 -0
- package/template/.aioson/agents/tester.md +53 -0
- package/template/.aioson/agents/ux-ui.md +203 -4
- package/template/.aioson/brains/README.md +128 -0
- package/template/.aioson/brains/_index.json +16 -0
- package/template/.aioson/brains/scripts/query.js +103 -0
- package/template/.aioson/brains/site-forge/visual-patterns.brain.json +205 -0
- package/template/.aioson/config.md +143 -13
- package/template/.aioson/constitution.md +33 -0
- package/template/.aioson/context/project-pulse.md +34 -0
- package/template/.aioson/docs/LAYERS.md +79 -0
- package/template/.aioson/docs/README.md +76 -0
- package/template/.aioson/docs/example-external-api-context.md +72 -0
- package/template/.aioson/genomes/copywriting.md +204 -0
- package/template/.aioson/locales/en/agents/architect.md +17 -0
- package/template/.aioson/locales/en/agents/dev.md +79 -13
- package/template/.aioson/locales/en/agents/orache.md +6 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +24 -0
- package/template/.aioson/locales/en/agents/product.md +50 -0
- package/template/.aioson/locales/en/agents/sheldon.md +115 -0
- package/template/.aioson/locales/en/agents/squad.md +14 -0
- package/template/.aioson/locales/en/agents/tester.md +6 -0
- package/template/.aioson/locales/es/agents/analyst.md +2 -0
- package/template/.aioson/locales/es/agents/architect.md +19 -0
- package/template/.aioson/locales/es/agents/dev.md +64 -4
- package/template/.aioson/locales/es/agents/deyvin.md +2 -0
- package/template/.aioson/locales/es/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/es/agents/genome.md +2 -0
- package/template/.aioson/locales/es/agents/neo.md +2 -0
- package/template/.aioson/locales/es/agents/orache.md +2 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/pair.md +2 -0
- package/template/.aioson/locales/es/agents/pm.md +2 -0
- package/template/.aioson/locales/es/agents/product.md +52 -0
- package/template/.aioson/locales/es/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/es/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/es/agents/qa.md +2 -0
- package/template/.aioson/locales/es/agents/setup.md +2 -0
- package/template/.aioson/locales/es/agents/sheldon.md +117 -0
- package/template/.aioson/locales/es/agents/squad.md +16 -0
- package/template/.aioson/locales/es/agents/tester.md +9 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/fr/agents/analyst.md +2 -0
- package/template/.aioson/locales/fr/agents/architect.md +19 -0
- package/template/.aioson/locales/fr/agents/dev.md +64 -4
- package/template/.aioson/locales/fr/agents/deyvin.md +2 -0
- package/template/.aioson/locales/fr/agents/discovery-design-doc.md +2 -0
- package/template/.aioson/locales/fr/agents/genome.md +2 -0
- package/template/.aioson/locales/fr/agents/neo.md +2 -0
- package/template/.aioson/locales/fr/agents/orache.md +2 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/pair.md +2 -0
- package/template/.aioson/locales/fr/agents/pm.md +2 -0
- package/template/.aioson/locales/fr/agents/product.md +52 -0
- package/template/.aioson/locales/fr/agents/profiler-enricher.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-forge.md +2 -0
- package/template/.aioson/locales/fr/agents/profiler-researcher.md +2 -0
- package/template/.aioson/locales/fr/agents/qa.md +2 -0
- package/template/.aioson/locales/fr/agents/setup.md +2 -0
- package/template/.aioson/locales/fr/agents/sheldon.md +117 -0
- package/template/.aioson/locales/fr/agents/squad.md +16 -0
- package/template/.aioson/locales/fr/agents/tester.md +9 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +2 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +64 -3
- package/template/.aioson/locales/pt-BR/agents/architect.md +42 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +147 -14
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +47 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +62 -1
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +158 -2
- package/template/.aioson/locales/pt-BR/agents/pm.md +95 -1
- package/template/.aioson/locales/pt-BR/agents/product.md +145 -18
- package/template/.aioson/locales/pt-BR/agents/qa.md +16 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +101 -18
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +132 -1
- package/template/.aioson/locales/pt-BR/agents/squad.md +14 -0
- package/template/.aioson/locales/pt-BR/agents/tester.md +449 -0
- package/template/.aioson/rules/README.md +69 -0
- package/template/.aioson/rules/data-format-convention.md +136 -0
- package/template/.aioson/rules/example-monetary-values.md +30 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +124 -3
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +2 -0
- package/template/.aioson/skills/design/pt.squarespace.com/.skill-meta.json +31 -0
- package/template/.aioson/skills/design/pt.squarespace.com/SKILL.md +66 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/components.md +368 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/design-tokens.md +150 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/motion.md +270 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/patterns.md +189 -0
- package/template/.aioson/skills/design/pt.squarespace.com/references/websites.md +165 -0
- package/template/.aioson/skills/marketing/references/anti-patterns.md +254 -0
- package/template/.aioson/skills/marketing/references/fascinations.md +192 -0
- package/template/.aioson/skills/marketing/references/five-acts.md +248 -0
- package/template/.aioson/skills/marketing/references/market-intelligence.md +198 -0
- package/template/.aioson/skills/marketing/references/offer-structure.md +203 -0
- package/template/.aioson/skills/marketing/references/one-belief.md +149 -0
- package/template/.aioson/skills/marketing/references/patterns.md +218 -0
- package/template/.aioson/skills/marketing/references/pms-research.md +193 -0
- package/template/.aioson/skills/marketing/vsl-craft.md +385 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +1 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/analyst.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/architect.md +23 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/dev.md +47 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/deyvin.md +27 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +35 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/product.md +25 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/qa.md +30 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/sheldon.md +25 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +4 -1
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +15 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +32 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +20 -0
- package/template/.aioson/skills/process/simplify/SKILL.md +173 -0
- package/template/.aioson/skills/static/context-budget-guide.md +46 -0
- package/template/.aioson/skills/static/harness-sensors.md +74 -0
- package/template/.aioson/skills/static/landing-page-deploy.md +192 -0
- package/template/.aioson/skills/static/landing-page-forge.md +730 -0
- package/template/.aioson/skills/static/multi-agent-patterns.md +43 -0
- package/template/.aioson/skills/static/react-motion-patterns.md +22 -0
- package/template/.aioson/skills/static/static-html-patterns/checklists.md +43 -0
- package/template/.aioson/skills/static/static-html-patterns/css-tokens.md +609 -0
- package/template/.aioson/skills/static/static-html-patterns/motion.md +193 -0
- package/template/.aioson/skills/static/static-html-patterns/premium.md +711 -0
- package/template/.aioson/skills/static/static-html-patterns/structure.md +209 -0
- package/template/.aioson/skills/static/static-html-patterns/utilities.md +190 -0
- package/template/.aioson/skills/static/static-html-patterns.md +58 -1913
- package/template/.aioson/skills/static/threejs-patterns.md +929 -0
- package/template/.aioson/skills/static/ui-ux-modern.md +1 -0
- package/template/.aioson/skills/static/web-research-cache.md +112 -0
- package/template/.aioson/tasks/implementation-plan.md +21 -1
- package/template/.aioson/tasks/squad-create.md +22 -0
- package/template/.aioson/tasks/squad-design.md +30 -0
- package/template/.aioson/templates/squads/digital-marketing-agency/template.json +96 -0
- package/template/.claude/commands/aioson/agent/design-hybrid-forge.md +5 -0
- package/template/.claude/commands/aioson/agent/orache.md +5 -0
- package/template/.claude/commands/aioson/agent/sheldon.md +5 -0
- package/template/.claude/commands/aioson/agent/site-forge.md +5 -0
- package/template/AGENTS.md +55 -3
- package/template/CLAUDE.md +31 -0
- package/template/OPENCODE.md +4 -0
- package/template/researchs/.gitkeep +0 -0
- package/template/.aioson/skills/design-system/components/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/dashboards/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/foundations/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/motion/SKILL.md:Zone.Identifier +0 -0
- package/template/.aioson/skills/design-system/patterns/SKILL.md:Zone.Identifier +0 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
{
|
|
2
|
+
"v": 1,
|
|
3
|
+
"agent": "site-forge",
|
|
4
|
+
"domain": "visual-patterns",
|
|
5
|
+
"desc": "CSS/animation/interaction patterns discovered while cloning real sites. Each node is a reusable lesson — quality-scored and anti-pattern aware. Use see[] to traverse related nodes.",
|
|
6
|
+
"updated": "2026-04-01",
|
|
7
|
+
"nodes": [
|
|
8
|
+
{
|
|
9
|
+
"id": "css-001",
|
|
10
|
+
"title": "CTA hover: mix-blend-mode:difference",
|
|
11
|
+
"tags": ["css", "hover", "cta", "button", "animation", "no-js", "blend-mode"],
|
|
12
|
+
"q": 5,
|
|
13
|
+
"v": "EXCELLENT",
|
|
14
|
+
"s": "White ::after pseudo-element with mix-blend-mode:difference creates color inversion on hover. Zero JS. Works on any background color automatically.",
|
|
15
|
+
"p": ".btn{position:relative;overflow:hidden} .btn::after{content:'';position:absolute;inset:0;background:white;mix-blend-mode:difference;transform:scaleX(0);transform-origin:0;transition:transform .3s cubic-bezier(.645,.045,.355,1)} .btn:hover::after{transform:scaleX(1)}",
|
|
16
|
+
"src": "pt.squarespace.com",
|
|
17
|
+
"date": "2026-04-01",
|
|
18
|
+
"not": "background-color color transition on hover — color swap is weak compared to inversion effect",
|
|
19
|
+
"warn": "parent needs overflow:hidden; does not work if parent has background:transparent",
|
|
20
|
+
"see": ["css-002", "css-008"]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "css-002",
|
|
24
|
+
"title": "Mobile menu: clip-path polygon() swipe",
|
|
25
|
+
"tags": ["css", "animation", "mobile", "menu", "drawer", "keyframes", "clip-path"],
|
|
26
|
+
"q": 5,
|
|
27
|
+
"v": "EXCELLENT",
|
|
28
|
+
"s": "Mobile drawer wipes in from right using clip-path polygon animation — more cinematic than translateX slide. Requires @keyframes swipeIn/swipeOut.",
|
|
29
|
+
"p": "@keyframes swipeIn{0%{clip-path:polygon(101% 0%,100% 0%,101% 100%,116% 100%)}to{clip-path:polygon(0% 0%,101% 0%,101% 101%,0% 101%)}} .menu--open{animation:.6s cubic-bezier(.165,.84,.44,1) forwards swipeIn}",
|
|
30
|
+
"src": "pt.squarespace.com",
|
|
31
|
+
"date": "2026-04-01",
|
|
32
|
+
"not": "transform:translateX(-100%) — generic slide, no visual drama",
|
|
33
|
+
"warn": "Menu must be position:fixed with full viewport size for clip-path to work correctly",
|
|
34
|
+
"see": ["css-001", "css-007"]
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "css-003",
|
|
38
|
+
"title": "Accordion: grid-template-rows 0fr→1fr",
|
|
39
|
+
"tags": ["css", "accordion", "animation", "no-js", "grid", "mobile"],
|
|
40
|
+
"q": 5,
|
|
41
|
+
"v": "EXCELLENT",
|
|
42
|
+
"s": "CSS grid transition on grid-template-rows animates height without any JS height calculation. Modern and smooth.",
|
|
43
|
+
"p": ".accordion-content{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s cubic-bezier(.165,.84,.44,1)} .accordion-content--open{grid-template-rows:1fr} .accordion-inner{overflow:hidden}",
|
|
44
|
+
"src": "pt.squarespace.com",
|
|
45
|
+
"date": "2026-04-01",
|
|
46
|
+
"not": "max-height hack or JS getBoundingClientRect height calculation",
|
|
47
|
+
"warn": "Inner child needs overflow:hidden for the 0fr collapse to work",
|
|
48
|
+
"see": ["css-007"]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "css-004",
|
|
52
|
+
"title": "Link underline: dual linear-gradient background-position",
|
|
53
|
+
"tags": ["css", "hover", "link", "underline", "animation", "keyframes"],
|
|
54
|
+
"q": 5,
|
|
55
|
+
"v": "EXCELLENT",
|
|
56
|
+
"s": "Two linear-gradients animated via background-position create a sliding underline that enters from left on hover and exits to right on mouse-leave. Pure CSS.",
|
|
57
|
+
"p": ".link{background-image:linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor);background-size:100% 1px,0% 1px;background-repeat:no-repeat;background-position:-200% 100%,-100% 100%;animation:.5s cubic-bezier(.645,.045,.355,1) forwards ctaUnderlineSlideOut} .link:hover{animation:.5s cubic-bezier(.645,.045,.355,1) forwards ctaUnderlineSlideIn}",
|
|
58
|
+
"src": "pt.squarespace.com",
|
|
59
|
+
"date": "2026-04-01",
|
|
60
|
+
"not": "text-decoration or border-bottom — no directional animation possible",
|
|
61
|
+
"warn": "Requires @keyframes ctaUnderlineSlideIn/Out; currentColor inherits from text color automatically",
|
|
62
|
+
"see": ["css-001", "css-007"]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "css-005",
|
|
66
|
+
"title": "Scroll reveal: IntersectionObserver + CSS class toggle",
|
|
67
|
+
"tags": ["css", "scroll", "reveal", "animation", "no-js-lib", "intersection-observer"],
|
|
68
|
+
"q": 5,
|
|
69
|
+
"v": "EXCELLENT",
|
|
70
|
+
"s": "IntersectionObserver adds .in-view class at 15% threshold; CSS transition handles opacity+translateY. Zero third-party libraries needed.",
|
|
71
|
+
"p": "// JS: const obs=new IntersectionObserver(entries=>entries.forEach(e=>e.isIntersecting&&e.target.classList.add('in-view')),{threshold:.15}); document.querySelectorAll('.reveal').forEach(el=>obs.observe(el)); // CSS: .reveal{opacity:0;transform:translateY(16px);transition:opacity .8s cubic-bezier(.23,1,.32,1),transform .8s cubic-bezier(.23,1,.32,1)} .reveal.in-view{opacity:1;transform:none}",
|
|
72
|
+
"src": "pt.squarespace.com",
|
|
73
|
+
"date": "2026-04-01",
|
|
74
|
+
"not": "AOS library, ScrollReveal, GSAP ScrollTrigger for basic fade-up reveals — overkill",
|
|
75
|
+
"warn": "threshold:0.15 is the sweet spot; too low fires too early, too high never fires on short sections",
|
|
76
|
+
"see": ["css-007", "css-008"]
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "css-006",
|
|
80
|
+
"title": "Staggered card reveals with nth-child delay",
|
|
81
|
+
"tags": ["css", "animation", "stagger", "cards", "scroll", "reveal"],
|
|
82
|
+
"q": 4,
|
|
83
|
+
"v": "GOOD",
|
|
84
|
+
"s": "Add transition-delay via nth-child selectors on .reveal-stagger children. 0.1s increments per card.",
|
|
85
|
+
"p": ".reveal-stagger>*:nth-child(1){transition-delay:0s} .reveal-stagger>*:nth-child(2){transition-delay:.1s} .reveal-stagger>*:nth-child(3){transition-delay:.2s} .reveal-stagger>*:nth-child(4){transition-delay:.3s} .reveal-stagger>*:nth-child(5){transition-delay:.4s}",
|
|
86
|
+
"src": "pt.squarespace.com",
|
|
87
|
+
"date": "2026-04-01",
|
|
88
|
+
"not": null,
|
|
89
|
+
"warn": "Keep delays short (0.1s increments); longer delays feel sluggish",
|
|
90
|
+
"see": ["css-005"]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "css-007",
|
|
94
|
+
"title": "Squarespace signature easing curves",
|
|
95
|
+
"tags": ["css", "easing", "animation", "cubic-bezier", "tokens"],
|
|
96
|
+
"q": 5,
|
|
97
|
+
"v": "EXCELLENT",
|
|
98
|
+
"s": "Three distinct easing curves used consistently: reveal=smooth deceleration, cta=power ease, menu=fast-in/slow-out. Gives a unified, professional motion feel.",
|
|
99
|
+
"p": "--ease-sqsp-reveal:cubic-bezier(.23,1,.32,1); --ease-sqsp-cta:cubic-bezier(.645,.045,.355,1); --ease-sqsp-menu:cubic-bezier(.165,.84,.44,1)",
|
|
100
|
+
"src": "pt.squarespace.com",
|
|
101
|
+
"date": "2026-04-01",
|
|
102
|
+
"not": "ease, ease-in-out, linear — generic curves flatten the personality of the site",
|
|
103
|
+
"warn": null,
|
|
104
|
+
"see": ["css-001", "css-002", "css-003", "css-004", "css-005"]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "css-008",
|
|
108
|
+
"title": "prefers-reduced-motion global override",
|
|
109
|
+
"tags": ["css", "accessibility", "animation", "best-practice"],
|
|
110
|
+
"q": 5,
|
|
111
|
+
"v": "BEST_PRACTICE",
|
|
112
|
+
"s": "Global @media prefers-reduced-motion override that collapses all durations to 0.01ms. Always include in globals.css — never skip.",
|
|
113
|
+
"p": "@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}",
|
|
114
|
+
"src": "pt.squarespace.com",
|
|
115
|
+
"date": "2026-04-01",
|
|
116
|
+
"not": null,
|
|
117
|
+
"warn": null,
|
|
118
|
+
"see": ["css-005"]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "css-009",
|
|
122
|
+
"title": "Video background: autoPlay muted loop playsInline",
|
|
123
|
+
"tags": ["css", "video", "background", "hero", "mobile"],
|
|
124
|
+
"q": 4,
|
|
125
|
+
"v": "GOOD",
|
|
126
|
+
"s": "Hero video must have all 4 attributes to autoplay cross-browser. WebM first, MP4 fallback. Dark rgba overlay on top. Mobile swap via useEffect.",
|
|
127
|
+
"p": "<video autoplay muted loop playsinline preload=auto><source src=desktop.webm type=video/webm><source src=desktop.mp4 type=video/mp4></video><div style=position:absolute;inset:0;background:rgba(0,0,0,.52)></div>",
|
|
128
|
+
"src": "pt.squarespace.com",
|
|
129
|
+
"date": "2026-04-01",
|
|
130
|
+
"not": "Using background-image: url() for video — use the real <video> element",
|
|
131
|
+
"warn": "Card carousel videos use preload=none; only hero is preload=auto",
|
|
132
|
+
"see": ["css-005"]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "js-001",
|
|
136
|
+
"title": "Extract @keyframes via document.styleSheets iteration",
|
|
137
|
+
"tags": ["js", "extraction", "keyframes", "css", "cloning", "analysis"],
|
|
138
|
+
"q": 5,
|
|
139
|
+
"v": "EXCELLENT",
|
|
140
|
+
"s": "Iterate document.styleSheets and cssRules to extract @keyframes verbatim. This is the ONLY way to get actual @keyframes — getComputedStyle never exposes them.",
|
|
141
|
+
"p": "const kf=[]; for(const s of document.styleSheets){try{for(const r of s.cssRules){if(r instanceof CSSKeyframesRule){kf.push({name:r.name,css:r.cssText})}}}catch(e){}} console.log(JSON.stringify(kf))",
|
|
142
|
+
"src": "research — pt.squarespace.com analysis",
|
|
143
|
+
"date": "2026-04-01",
|
|
144
|
+
"not": "getComputedStyle(el).animation — returns resolved shorthand, never exposes @keyframes definitions",
|
|
145
|
+
"warn": "CORS will throw on cross-origin stylesheets — wrap in try/catch per sheet",
|
|
146
|
+
"see": ["js-002", "js-003"]
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "js-002",
|
|
150
|
+
"title": "MutationObserver scroll recording for DOM class changes",
|
|
151
|
+
"tags": ["js", "extraction", "cloning", "scroll", "animation", "mutationobserver"],
|
|
152
|
+
"q": 5,
|
|
153
|
+
"v": "EXCELLENT",
|
|
154
|
+
"s": "Attach MutationObserver BEFORE starting scroll; record mutations at 8 checkpoints (0%, 12%, 25%, 37%, 50%, 62%, 75%, 87%, 100%). Each record: scrollY + changed elements + class diffs.",
|
|
155
|
+
"p": "const mutations=[]; const obs=new MutationObserver(ms=>ms.forEach(m=>{mutations.push({scrollY:window.scrollY,target:m.target.className,added:[...m.addedNodes].map(n=>n.className),attr:m.attributeName,old:m.oldValue})})); obs.observe(document.body,{subtree:true,attributes:true,attributeOldValue:true,childList:true}); // then scroll to each % checkpoint with 600ms settle",
|
|
156
|
+
"src": "research — pt.squarespace.com analysis",
|
|
157
|
+
"date": "2026-04-01",
|
|
158
|
+
"not": "Manual screenshot comparison — misses class toggles and DOM mutations",
|
|
159
|
+
"warn": "600ms settle time needed after each scroll to let animations complete",
|
|
160
|
+
"see": ["js-001", "js-003"]
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"id": "js-003",
|
|
164
|
+
"title": "AVOID: getComputedStyle for animation detection",
|
|
165
|
+
"tags": ["js", "extraction", "animation", "anti-pattern"],
|
|
166
|
+
"q": 1,
|
|
167
|
+
"v": "AVOID",
|
|
168
|
+
"s": "getComputedStyle returns resolved property values — it NEVER exposes @keyframes definitions, animation timing functions are partially resolved, clip-path values may differ from source.",
|
|
169
|
+
"p": "// BAD: getComputedStyle(el).animationName → returns name only, not keyframes // BAD: getComputedStyle(el).clipPath → returns computed polygon(), but not the @keyframes that drives it",
|
|
170
|
+
"src": "research — pt.squarespace.com analysis",
|
|
171
|
+
"date": "2026-04-01",
|
|
172
|
+
"not": null,
|
|
173
|
+
"warn": "Use document.styleSheets iteration (js-001) to get real @keyframes definitions",
|
|
174
|
+
"see": ["js-001", "js-002"]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "js-004",
|
|
178
|
+
"title": "JS library detection before choosing animation strategy",
|
|
179
|
+
"tags": ["js", "cloning", "gsap", "framer-motion", "animation", "detection"],
|
|
180
|
+
"q": 5,
|
|
181
|
+
"v": "EXCELLENT",
|
|
182
|
+
"s": "Always check window.gsap, window.ScrollTrigger, data-framer-component-type before choosing animation implementation. Wrong library choice creates double-animation or no-animation bugs.",
|
|
183
|
+
"p": "const libs={gsap:!!window.gsap,scrollTrigger:!!window.ScrollTrigger,framer:!!document.querySelector('[data-framer-component-type]'),lottie:!!window.lottie,aos:!!window.AOS}",
|
|
184
|
+
"src": "research — pt.squarespace.com analysis",
|
|
185
|
+
"date": "2026-04-01",
|
|
186
|
+
"not": "Defaulting to IntersectionObserver when GSAP is detected on the source site",
|
|
187
|
+
"warn": "Site not using GSAP does NOT mean IntersectionObserver is the right choice — read the actual @keyframes first",
|
|
188
|
+
"see": ["js-001", "js-002", "css-005"]
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "font-001",
|
|
192
|
+
"title": "Proprietary fonts: extract woff2 from saved site, serve locally",
|
|
193
|
+
"tags": ["font", "typography", "woff2", "cloning", "font-face"],
|
|
194
|
+
"q": 4,
|
|
195
|
+
"v": "GOOD",
|
|
196
|
+
"s": "When site uses proprietary font (CDN-blocked), extract woff2 files from the saved site's fonts/ directory. Serve via @font-face pointing to public/fonts/. Reference assets only — rewrite content.",
|
|
197
|
+
"p": "@font-face{font-family:'Clarkson';font-weight:300;font-display:swap;src:url('/fonts/clarkson-300.woff2') format('woff2')}",
|
|
198
|
+
"src": "pt.squarespace.com",
|
|
199
|
+
"date": "2026-04-01",
|
|
200
|
+
"not": "Trying to load proprietary fonts from CDN — 403 in production",
|
|
201
|
+
"warn": "Reference assets only — do not redistribute proprietary font files in public projects",
|
|
202
|
+
"see": []
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
}
|
|
@@ -104,34 +104,62 @@ In direct mode (LLM without CLI), agents call them manually following the rules
|
|
|
104
104
|
When the `aioson` CLI is **not available**, agents must write a devlog file at the end of the session (or when the user asks to save progress). This is the only way to preserve session history for the dashboard when the CLI is missing.
|
|
105
105
|
|
|
106
106
|
**Directory:** `aioson-logs/` (create if absent)
|
|
107
|
-
**Filename:** `devlog-{
|
|
108
|
-
**If a devlog from today already exists:** append to it instead of creating a new file.
|
|
107
|
+
**Filename:** `devlog-{agent}-{unix-timestamp}.md`
|
|
109
108
|
|
|
110
109
|
**Template:**
|
|
111
110
|
```markdown
|
|
112
111
|
---
|
|
113
|
-
agent:
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
112
|
+
agent: dev
|
|
113
|
+
feature: {feature-slug or "project"}
|
|
114
|
+
session_key: direct-session:{unix-timestamp}:{agent}
|
|
115
|
+
started_at: {ISO 8601}
|
|
116
|
+
finished_at: {ISO 8601}
|
|
117
|
+
status: completed
|
|
118
|
+
verdict: null
|
|
119
|
+
plan_step: null
|
|
118
120
|
---
|
|
119
121
|
|
|
122
|
+
# Devlog: @{agent} — {feature} — {YYYY-MM-DD}
|
|
123
|
+
|
|
124
|
+
## Summary
|
|
125
|
+
{One sentence of what was accomplished.}
|
|
126
|
+
|
|
127
|
+
## Artifacts
|
|
128
|
+
- {path/to/file.ext}
|
|
129
|
+
|
|
120
130
|
## Decisions
|
|
121
131
|
- {decision} → {why}
|
|
122
132
|
|
|
123
|
-
##
|
|
124
|
-
-
|
|
133
|
+
## Learnings
|
|
134
|
+
- [process] {any process learning from this session}
|
|
135
|
+
- [domain] {any domain learning}
|
|
136
|
+
|
|
137
|
+
## Blockers
|
|
138
|
+
- {blocker or "None"}
|
|
139
|
+
```
|
|
125
140
|
|
|
126
|
-
|
|
127
|
-
|
|
141
|
+
**Minimum viable devlog (if session was cut short):**
|
|
142
|
+
```markdown
|
|
143
|
+
---
|
|
144
|
+
agent: {agent}
|
|
145
|
+
feature: {slug}
|
|
146
|
+
status: partial
|
|
147
|
+
started_at: {ISO 8601}
|
|
148
|
+
finished_at: {ISO 8601}
|
|
149
|
+
---
|
|
150
|
+
# Devlog: @{agent} — {feature} — {date}
|
|
151
|
+
## Summary
|
|
152
|
+
{one sentence of what was done}
|
|
153
|
+
## Learnings
|
|
154
|
+
- [process] {any process learning}
|
|
128
155
|
```
|
|
129
156
|
|
|
130
157
|
**Rules:**
|
|
131
|
-
-
|
|
158
|
+
- Frontmatter fields `agent`, `started_at`, `finished_at` are required. All others are optional.
|
|
159
|
+
- `[process]` / `[domain]` / `[quality]` / `[preference]` prefixes in Learnings enable automatic promotion to project memory.
|
|
132
160
|
- Record **why** decisions were made — the "what" is in the git diff.
|
|
133
161
|
- Skip the devlog for trivial sessions (quick questions, no code changes).
|
|
134
|
-
- When the CLI becomes available
|
|
162
|
+
- When the CLI becomes available: `aioson devlog:process .` imports devlogs into SQLite (learnings, artifacts, decisions, verdict).
|
|
135
163
|
|
|
136
164
|
## On-demand context layers
|
|
137
165
|
|
|
@@ -243,6 +271,108 @@ When a workflow stage completes or an agent finishes via `runtime-log --finish`,
|
|
|
243
271
|
|
|
244
272
|
Agents can read this file on activation to resume work without losing context between sessions.
|
|
245
273
|
|
|
274
|
+
## Context compaction template
|
|
275
|
+
|
|
276
|
+
When approaching context threshold, any agent can write a structured checkpoint to
|
|
277
|
+
`.aioson/context/last-handoff.json` before compacting:
|
|
278
|
+
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"agent": "<agent-name>",
|
|
282
|
+
"session_summary": {
|
|
283
|
+
"messages_processed": "<N>",
|
|
284
|
+
"tools_used": ["<tool1>", "<tool2>"],
|
|
285
|
+
"recent_requests": ["<last 3 user requests>"],
|
|
286
|
+
"pending_work": ["<item1>", "<item2>"],
|
|
287
|
+
"key_files": ["<path1>", "<path2>"],
|
|
288
|
+
"timeline": ["<step1 done>", "<step2 done>"]
|
|
289
|
+
},
|
|
290
|
+
"compacted_at": "<ISO 8601>",
|
|
291
|
+
"resume_instruction": "Continue from this summary. Do not acknowledge it."
|
|
292
|
+
}
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
After writing, prepend to the next response:
|
|
296
|
+
`[Context compacted — resuming from checkpoint]`
|
|
297
|
+
|
|
298
|
+
On resume: read `last-handoff.json` before loading any other context file.
|
|
299
|
+
|
|
300
|
+
Agents with dedicated compaction protocols (e.g. `@orache`) define additional
|
|
301
|
+
steps in their own files — this template is the shared baseline.
|
|
302
|
+
|
|
303
|
+
## Hook contract (PreToolUse / PostToolUse)
|
|
304
|
+
|
|
305
|
+
Hooks are shell scripts configured in `.claude/settings.json` under `hooks`.
|
|
306
|
+
The harness passes context via stdin (JSON) and environment variables.
|
|
307
|
+
|
|
308
|
+
### Exit codes
|
|
309
|
+
| Code | Meaning |
|
|
310
|
+
|------|---------|
|
|
311
|
+
| 0 | Allow — continue tool execution |
|
|
312
|
+
| 2 | Deny — block tool, return message to agent |
|
|
313
|
+
| other non-zero | Warn — log warning, continue execution |
|
|
314
|
+
|
|
315
|
+
### Environment variables
|
|
316
|
+
| Variable | Description |
|
|
317
|
+
|----------|-------------|
|
|
318
|
+
| `HOOK_EVENT` | `PreToolUse` or `PostToolUse` |
|
|
319
|
+
| `HOOK_TOOL_NAME` | Tool being executed (e.g. `Bash`, `Write`) |
|
|
320
|
+
| `HOOK_TOOL_INPUT` | JSON params of the tool call |
|
|
321
|
+
| `HOOK_TOOL_IS_ERROR` | `true`/`false` (PostToolUse only) |
|
|
322
|
+
| `HOOK_TOOL_OUTPUT` | Tool output (PostToolUse only) |
|
|
323
|
+
|
|
324
|
+
### Example: block rm -rf in Bash
|
|
325
|
+
```bash
|
|
326
|
+
#!/bin/bash
|
|
327
|
+
INPUT=$(cat)
|
|
328
|
+
if echo "$INPUT" | grep -q "rm -rf"; then
|
|
329
|
+
echo "Blocked: rm -rf not allowed in this project"
|
|
330
|
+
exit 2
|
|
331
|
+
fi
|
|
332
|
+
exit 0
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## Agent file size guidelines
|
|
336
|
+
|
|
337
|
+
The Claude Code harness enforces a hard limit of ~4,000 chars per auto-loaded
|
|
338
|
+
instruction file (`CLAUDE.md` hierarchy). Files are truncated silently.
|
|
339
|
+
Agent files in `.aioson/agents/` are read manually (not auto-loaded) so they
|
|
340
|
+
are not subject to this truncation, but large files consume context budget.
|
|
341
|
+
|
|
342
|
+
Recommended targets:
|
|
343
|
+
|
|
344
|
+
| File type | Target | Notes |
|
|
345
|
+
|-----------|--------|-------|
|
|
346
|
+
| `CLAUDE.md` / `AGENTS.md` | ≤ 3,500 chars | Auto-loaded — hard truncation applies |
|
|
347
|
+
| Focused agents (analyst, qa, tester) | ≤ 8,000 chars | Keep lean |
|
|
348
|
+
| Generalist agents (dev, architect) | ≤ 15,000 chars | Move optional sections to `.aioson/docs/` |
|
|
349
|
+
| Orchestrator agents (orchestrator, squad) | ≤ 12,000 chars | Move boilerplate to `.aioson/rules/` |
|
|
350
|
+
|
|
351
|
+
When an agent file exceeds its target:
|
|
352
|
+
1. Move repeated boilerplate to a shared `.aioson/rules/` file
|
|
353
|
+
2. Split optional sections into `.aioson/docs/` files (loaded on demand)
|
|
354
|
+
3. Use the "On-demand context layers" pattern from this config
|
|
355
|
+
|
|
356
|
+
## Config tiers
|
|
357
|
+
|
|
358
|
+
AIOSON supports three config tiers (precedence: local > project > user):
|
|
359
|
+
|
|
360
|
+
| Tier | Location | Versioned | Purpose |
|
|
361
|
+
|------|----------|-----------|---------|
|
|
362
|
+
| User | `~/.aioson/config.md` | No | Personal defaults (model, locale, thresholds) |
|
|
363
|
+
| Project | `.aioson/config.md` | Yes | Team standards — source of truth |
|
|
364
|
+
| Local | `.aioson/config.local.md` | No | Machine overrides (local paths, env specifics) |
|
|
365
|
+
|
|
366
|
+
When the same setting exists in multiple tiers, the lower tier wins (local > project > user).
|
|
367
|
+
|
|
368
|
+
**Current support:**
|
|
369
|
+
- Project tier: fully supported (this file)
|
|
370
|
+
- Local tier: `config.local.md` is the convention — agents can read it if present
|
|
371
|
+
- User tier (`~/.aioson/config.md`): **backlog** — requires CLI support; not yet read automatically
|
|
372
|
+
|
|
373
|
+
Until the user tier is implemented in the CLI, use `CLAUDE.local.md` for personal
|
|
374
|
+
preferences that should not affect other team members.
|
|
375
|
+
|
|
246
376
|
## Agent locale packs
|
|
247
377
|
- Localized agent prompts are stored in `.aioson/locales/<locale>/agents/`.
|
|
248
378
|
- Active runtime prompts are in `.aioson/agents/`.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
ratified: 2026-04-04
|
|
4
|
+
last_amended: 2026-04-04
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AIOSON Constitution
|
|
8
|
+
|
|
9
|
+
> Principles that govern all agents, all classifications, all sessions.
|
|
10
|
+
> Every agent may cite these articles. No agent may override them.
|
|
11
|
+
|
|
12
|
+
## Article I — Spec First
|
|
13
|
+
Features begin as specifications, not code. Implementation without a spec artifact is exploration, not development.
|
|
14
|
+
|
|
15
|
+
## Article II — Right-Sized Process
|
|
16
|
+
MICRO, SMALL, and MEDIUM must not receive the same process depth. Applying MEDIUM ceremony to a MICRO project wastes more than it protects.
|
|
17
|
+
|
|
18
|
+
## Article III — Observable Work
|
|
19
|
+
Important agent actions leave visible artifacts or runtime signals. Work that exists only in conversation history is work that can be lost.
|
|
20
|
+
|
|
21
|
+
## Article IV — Testable Behavior
|
|
22
|
+
Acceptance criteria must be independently verifiable. "Works correctly" is not a criterion. "Returns 403 when user A accesses user B's resource" is.
|
|
23
|
+
|
|
24
|
+
## Article V — Clean Handoffs
|
|
25
|
+
Artifacts must be self-contained enough for the next agent to start without re-reading the full discovery chain. If the next agent needs to ask "where do I start?", the handoff failed.
|
|
26
|
+
|
|
27
|
+
## Article VI — Simplicity Over Ceremony
|
|
28
|
+
Do not add layers, files, or workflows unless they reduce downstream ambiguity. Three similar lines of code is better than a premature abstraction. One well-written spec is better than five thin artifacts.
|
|
29
|
+
|
|
30
|
+
## Governance
|
|
31
|
+
- Amendments require explicit user approval
|
|
32
|
+
- Articles are numbered, not named — never renumber existing articles
|
|
33
|
+
- New articles are appended, never inserted
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
updated_at: null
|
|
3
|
+
last_agent: null
|
|
4
|
+
last_gate: null
|
|
5
|
+
active_features: 0
|
|
6
|
+
blocked: false
|
|
7
|
+
blocked_reason: null
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Project Pulse
|
|
11
|
+
|
|
12
|
+
> Global project state. Updated by every agent at session end.
|
|
13
|
+
> Read this FIRST when starting any session to orient quickly.
|
|
14
|
+
> Max 30 lines of content — trim older entries when growing beyond that.
|
|
15
|
+
|
|
16
|
+
## Active work
|
|
17
|
+
|
|
18
|
+
| Feature | Phase | Agent | Status | Last checkpoint |
|
|
19
|
+
|---------|-------|-------|--------|-----------------|
|
|
20
|
+
| — | — | — | — | — |
|
|
21
|
+
|
|
22
|
+
## Recent activity (last 3 sessions)
|
|
23
|
+
|
|
24
|
+
| Date | Agent | Action | Result |
|
|
25
|
+
|------|-------|--------|--------|
|
|
26
|
+
| — | — | — | — |
|
|
27
|
+
|
|
28
|
+
## Blockers
|
|
29
|
+
|
|
30
|
+
None.
|
|
31
|
+
|
|
32
|
+
## Next recommended action
|
|
33
|
+
|
|
34
|
+
No active work. Start with `@product` for a new feature or `@setup` for a new project.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Guide to the three project memory layers: rules, docs, and design-docs — when to use each"
|
|
3
|
+
agents: []
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AIOSON Project Memory Layers
|
|
7
|
+
|
|
8
|
+
Three directories accumulate project knowledge over time.
|
|
9
|
+
Each has a different purpose and a different update cadence.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Layer 1 — `.aioson/rules/`
|
|
14
|
+
|
|
15
|
+
**What it is:** behavioral overrides for agents.
|
|
16
|
+
**Who writes it:** the user, or promoted from recurring @dev patterns.
|
|
17
|
+
**When to use:** when you want to enforce a convention that overrides agent defaults — globally or for specific agents.
|
|
18
|
+
**Cadence:** stable. Rules change rarely; only when a convention is proven wrong or superseded.
|
|
19
|
+
|
|
20
|
+
Examples of good rules:
|
|
21
|
+
- "All API routes must follow REST naming conventions in this project"
|
|
22
|
+
- "Never use float for monetary values — use integer cents"
|
|
23
|
+
- "The @dev agent must always write a migration for schema changes"
|
|
24
|
+
|
|
25
|
+
See `rules/README.md` for format and frontmatter reference.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Layer 2 — `.aioson/docs/`
|
|
30
|
+
|
|
31
|
+
**What it is:** domain knowledge and technical reference that agents load on demand.
|
|
32
|
+
**Who writes it:** the user or @architect, based on real integration and domain complexity.
|
|
33
|
+
**When to use:** when multiple agents across different features need the same external context — API behavior, third-party quirks, data model explanations, integration patterns.
|
|
34
|
+
**Cadence:** updated when the referenced system changes, not after every feature.
|
|
35
|
+
|
|
36
|
+
Examples of good docs:
|
|
37
|
+
- `stripe-integration-context.md` — describes webhook event model, idempotency keys used
|
|
38
|
+
- `auth-rbac-model.md` — explains the role/permission system as it stands in production
|
|
39
|
+
- `legacy-api-behavior.md` — documents known quirks of an external API affecting multiple features
|
|
40
|
+
|
|
41
|
+
See `docs/README.md` for format and naming conventions.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Layer 3 — `.aioson/context/design-doc*.md`
|
|
46
|
+
|
|
47
|
+
**What it is:** living decision document for the current feature or project scope.
|
|
48
|
+
**Who writes it:** @discovery-design-doc.
|
|
49
|
+
**Who updates it:** @dev at feature close, @discovery-design-doc when resuming.
|
|
50
|
+
**When to use:** automatically — one per feature (`design-doc-{slug}.md`) or one project-wide (`design-doc.md`).
|
|
51
|
+
**Cadence:** updated at the end of each feature implementation session. Decisions are append-only — never deleted.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Decision Guide
|
|
56
|
+
|
|
57
|
+
| Situation | Where it goes |
|
|
58
|
+
|-----------|--------------|
|
|
59
|
+
| Enforce a coding convention for this project | `rules/` |
|
|
60
|
+
| Agents must always know about an external API behavior | `docs/` |
|
|
61
|
+
| Document the scope and decisions for a specific feature | `design-doc-{slug}.md` |
|
|
62
|
+
| Log a global project-wide architecture decision | `design-doc.md` |
|
|
63
|
+
| Promote a recurring @dev pattern | `rules/` via @dev promotion |
|
|
64
|
+
| Document an integration used by 3+ features | `docs/` |
|
|
65
|
+
| Record what was decided during a single feature session | `design-doc-{slug}.md` (Decisions already made section) |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## What NOT to put in these layers
|
|
70
|
+
|
|
71
|
+
| Content | Where it actually belongs |
|
|
72
|
+
|---------|--------------------------|
|
|
73
|
+
| Feature requirements | `requirements-{slug}.md` |
|
|
74
|
+
| PRD / product scope | `prd-{slug}.md` |
|
|
75
|
+
| Execution sequence | `implementation-plan-{slug}.md` |
|
|
76
|
+
| Current implementation state | `spec-{slug}.md` |
|
|
77
|
+
| Project-wide context | `project.context.md` |
|
|
78
|
+
| Domain entity map | `discovery.md` |
|
|
79
|
+
| Technical architecture | `architecture.md` |
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Guide to the docs layer: domain knowledge and technical reference for agents"
|
|
3
|
+
agents: []
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Project Docs
|
|
7
|
+
|
|
8
|
+
Files in this directory are domain knowledge and technical reference that agents load on demand.
|
|
9
|
+
|
|
10
|
+
Unlike `rules/` (which enforce conventions), docs explain **how something works** — external APIs, data models, integration patterns, legacy behavior, third-party quirks.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Frontmatter Format
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
---
|
|
18
|
+
description: "Short description of what this doc covers — used by agents to decide relevance"
|
|
19
|
+
scope: "global" # or a feature slug if doc is scoped to one area
|
|
20
|
+
agents: [] # empty = any agent may load; or restrict: [dev, architect]
|
|
21
|
+
---
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Field Reference
|
|
27
|
+
|
|
28
|
+
| Field | Required | Description |
|
|
29
|
+
|-------|----------|-------------|
|
|
30
|
+
| `description` | yes | What this doc covers — agents use this to decide whether to load it |
|
|
31
|
+
| `scope` | no | `global` (default) or a feature slug for narrow scope |
|
|
32
|
+
| `agents` | no | If empty, any agent may load; if listed, only those agents load it |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Loading Behavior
|
|
37
|
+
|
|
38
|
+
Agents load docs when the `description` frontmatter is relevant to the current task.
|
|
39
|
+
An empty `agents:` field means any agent can load the doc.
|
|
40
|
+
Docs are loaded in addition to the current context — not as replacements.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## When to Create a Doc
|
|
45
|
+
|
|
46
|
+
Create a doc when:
|
|
47
|
+
- Two or more features need the same external context
|
|
48
|
+
- An integration has non-obvious behavior that has caused bugs or would cause rework
|
|
49
|
+
- A data model exists only in production and is not derivable from the codebase
|
|
50
|
+
- A third-party API has quirks that affect how agents implement against it
|
|
51
|
+
|
|
52
|
+
Do NOT create a doc for:
|
|
53
|
+
- Feature-specific decisions (use `design-doc-{slug}.md` instead)
|
|
54
|
+
- Project conventions (use `rules/` instead)
|
|
55
|
+
- Current implementation state (use `spec-{slug}.md` instead)
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Naming Convention
|
|
60
|
+
|
|
61
|
+
Use kebab-case. Name the file after the system or concept, not the feature:
|
|
62
|
+
|
|
63
|
+
| Good | Bad |
|
|
64
|
+
|------|-----|
|
|
65
|
+
| `stripe-webhook-behavior.md` | `billing-feature-notes.md` |
|
|
66
|
+
| `auth-rbac-model.md` | `auth-stuff.md` |
|
|
67
|
+
| `legacy-api-quirks.md` | `misc-notes.md` |
|
|
68
|
+
| `email-delivery-constraints.md` | `sendgrid.md` (too generic) |
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Example
|
|
73
|
+
|
|
74
|
+
See `example-external-api-context.md` in this directory for a working template.
|
|
75
|
+
|
|
76
|
+
For the layer separation guide (when to use `docs/` vs `rules/` vs `design-doc`), see `LAYERS.md`.
|