@etus/seven-skill 0.1.0-beta.3 → 0.1.0-beta.4
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/.agents/skills/seven/SKILL.md +161 -0
- package/.agents/skills/seven/agents/seven_asset_producer.toml +37 -0
- package/.agents/skills/seven/agents/seven_finish_reviewer.toml +33 -0
- package/.agents/skills/seven/agents/seven_manual_edit_applier.toml +43 -0
- package/.agents/skills/seven/reference/adapt.md +34 -0
- package/.agents/skills/seven/reference/animate.md +31 -0
- package/.agents/skills/seven/reference/app-shell.md +152 -0
- package/.agents/skills/seven/reference/audit.md +122 -0
- package/.agents/skills/seven/reference/bolder.md +34 -0
- package/.agents/skills/seven/reference/brand.md +31 -0
- package/.agents/skills/seven/reference/clarify.md +76 -0
- package/.agents/skills/seven/reference/color-and-contrast.md +84 -0
- package/.agents/skills/seven/reference/colorize.md +31 -0
- package/.agents/skills/seven/reference/critique.md +53 -0
- package/.agents/skills/seven/reference/delight.md +30 -0
- package/.agents/skills/seven/reference/distill.md +30 -0
- package/.agents/skills/seven/reference/doctor.md +7 -0
- package/.agents/skills/seven/reference/document.md +36 -0
- package/.agents/skills/seven/reference/evaluations.md +38 -0
- package/.agents/skills/seven/reference/exceptions.md +7 -0
- package/.agents/skills/seven/reference/extract.md +42 -0
- package/.agents/skills/seven/reference/harden.md +36 -0
- package/.agents/skills/seven/reference/hooks.md +11 -0
- package/.agents/skills/seven/reference/init.md +38 -0
- package/.agents/skills/seven/reference/layout.md +33 -0
- package/.agents/skills/seven/reference/live.md +106 -0
- package/.agents/skills/seven/reference/motion-design.md +71 -0
- package/.agents/skills/seven/reference/onboard.md +35 -0
- package/.agents/skills/seven/reference/optimize.md +34 -0
- package/.agents/skills/seven/reference/overdrive.md +32 -0
- package/.agents/skills/seven/reference/polish.md +55 -0
- package/.agents/skills/seven/reference/product.md +43 -0
- package/.agents/skills/seven/reference/quieter.md +31 -0
- package/.agents/skills/seven/reference/routing.md +28 -0
- package/.agents/skills/seven/reference/shape.md +85 -0
- package/.agents/skills/seven/reference/spatial-design.md +60 -0
- package/.agents/skills/seven/reference/typeset.md +28 -0
- package/.agents/skills/seven/reference/typography.md +43 -0
- package/.agents/skills/seven/reference/ux-writing.md +47 -0
- package/.agents/skills/seven/reference/visual-probes.md +36 -0
- package/.agents/skills/seven/scripts/context-signals.mjs +94 -0
- package/.agents/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.agents/skills/seven/scripts/load-context.mjs +93 -0
- package/.agents/skills/seven/scripts/update-check.mjs +120 -0
- package/.claude/agents/seven-asset-producer.md +40 -0
- package/.claude/agents/seven-finish-reviewer.md +36 -0
- package/.claude/agents/seven-manual-edit-applier.md +46 -0
- package/.claude/skills/seven/SKILL.md +127 -130
- package/.claude/skills/seven/reference/adapt.md +34 -0
- package/.claude/skills/seven/reference/animate.md +31 -0
- package/.claude/skills/seven/reference/app-shell.md +100 -18
- package/.claude/skills/seven/reference/audit.md +6 -4
- package/.claude/skills/seven/reference/bolder.md +34 -0
- package/.claude/skills/seven/reference/brand.md +21 -14
- package/.claude/skills/seven/reference/clarify.md +2 -2
- package/.claude/skills/seven/reference/colorize.md +31 -0
- package/.claude/skills/seven/reference/critique.md +53 -0
- package/.claude/skills/seven/reference/delight.md +30 -0
- package/.claude/skills/seven/reference/distill.md +30 -0
- package/.claude/skills/seven/reference/doctor.md +7 -0
- package/.claude/skills/seven/reference/document.md +36 -0
- package/.claude/skills/seven/reference/evaluations.md +38 -0
- package/.claude/skills/seven/reference/exceptions.md +7 -0
- package/.claude/skills/seven/reference/extract.md +42 -0
- package/.claude/skills/seven/reference/harden.md +36 -0
- package/.claude/skills/seven/reference/hooks.md +11 -0
- package/.claude/skills/seven/reference/init.md +38 -0
- package/.claude/skills/seven/reference/layout.md +33 -0
- package/.claude/skills/seven/reference/live.md +106 -0
- package/.claude/skills/seven/reference/motion-design.md +1 -1
- package/.claude/skills/seven/reference/onboard.md +35 -0
- package/.claude/skills/seven/reference/optimize.md +34 -0
- package/.claude/skills/seven/reference/overdrive.md +32 -0
- package/.claude/skills/seven/reference/polish.md +5 -5
- package/.claude/skills/seven/reference/product.md +2 -4
- package/.claude/skills/seven/reference/quieter.md +31 -0
- package/.claude/skills/seven/reference/routing.md +28 -0
- package/.claude/skills/seven/reference/shape.md +5 -5
- package/.claude/skills/seven/reference/spatial-design.md +3 -3
- package/.claude/skills/seven/reference/typeset.md +28 -0
- package/.claude/skills/seven/reference/typography.md +1 -1
- package/.claude/skills/seven/reference/visual-probes.md +36 -0
- package/.claude/skills/seven/scripts/context-signals.mjs +94 -0
- package/.claude/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.claude/skills/seven/scripts/load-context.mjs +68 -59
- package/.claude/skills/seven/scripts/update-check.mjs +120 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +8 -3
- package/.cursor/skills/seven/SKILL.md +161 -0
- package/.cursor/skills/seven/reference/adapt.md +34 -0
- package/.cursor/skills/seven/reference/animate.md +31 -0
- package/.cursor/skills/seven/reference/app-shell.md +152 -0
- package/.cursor/skills/seven/reference/audit.md +122 -0
- package/.cursor/skills/seven/reference/bolder.md +34 -0
- package/.cursor/skills/seven/reference/brand.md +31 -0
- package/.cursor/skills/seven/reference/clarify.md +76 -0
- package/.cursor/skills/seven/reference/color-and-contrast.md +84 -0
- package/.cursor/skills/seven/reference/colorize.md +31 -0
- package/.cursor/skills/seven/reference/critique.md +53 -0
- package/.cursor/skills/seven/reference/delight.md +30 -0
- package/.cursor/skills/seven/reference/distill.md +30 -0
- package/.cursor/skills/seven/reference/doctor.md +7 -0
- package/.cursor/skills/seven/reference/document.md +36 -0
- package/.cursor/skills/seven/reference/evaluations.md +38 -0
- package/.cursor/skills/seven/reference/exceptions.md +7 -0
- package/.cursor/skills/seven/reference/extract.md +42 -0
- package/.cursor/skills/seven/reference/harden.md +36 -0
- package/.cursor/skills/seven/reference/hooks.md +11 -0
- package/.cursor/skills/seven/reference/init.md +38 -0
- package/.cursor/skills/seven/reference/layout.md +33 -0
- package/.cursor/skills/seven/reference/live.md +106 -0
- package/.cursor/skills/seven/reference/motion-design.md +71 -0
- package/.cursor/skills/seven/reference/onboard.md +35 -0
- package/.cursor/skills/seven/reference/optimize.md +34 -0
- package/.cursor/skills/seven/reference/overdrive.md +32 -0
- package/.cursor/skills/seven/reference/polish.md +55 -0
- package/.cursor/skills/seven/reference/product.md +43 -0
- package/.cursor/skills/seven/reference/quieter.md +31 -0
- package/.cursor/skills/seven/reference/routing.md +28 -0
- package/.cursor/skills/seven/reference/shape.md +85 -0
- package/.cursor/skills/seven/reference/spatial-design.md +60 -0
- package/.cursor/skills/seven/reference/typeset.md +28 -0
- package/.cursor/skills/seven/reference/typography.md +43 -0
- package/.cursor/skills/seven/reference/ux-writing.md +47 -0
- package/.cursor/skills/seven/reference/visual-probes.md +36 -0
- package/.cursor/skills/seven/scripts/context-signals.mjs +94 -0
- package/.cursor/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.cursor/skills/seven/scripts/load-context.mjs +93 -0
- package/.cursor/skills/seven/scripts/update-check.mjs +120 -0
- package/.gemini/skills/seven/SKILL.md +160 -0
- package/.gemini/skills/seven/reference/adapt.md +34 -0
- package/.gemini/skills/seven/reference/animate.md +31 -0
- package/.gemini/skills/seven/reference/app-shell.md +152 -0
- package/.gemini/skills/seven/reference/audit.md +122 -0
- package/.gemini/skills/seven/reference/bolder.md +34 -0
- package/.gemini/skills/seven/reference/brand.md +31 -0
- package/.gemini/skills/seven/reference/clarify.md +76 -0
- package/.gemini/skills/seven/reference/color-and-contrast.md +84 -0
- package/.gemini/skills/seven/reference/colorize.md +31 -0
- package/.gemini/skills/seven/reference/critique.md +53 -0
- package/.gemini/skills/seven/reference/delight.md +30 -0
- package/.gemini/skills/seven/reference/distill.md +30 -0
- package/.gemini/skills/seven/reference/doctor.md +7 -0
- package/.gemini/skills/seven/reference/document.md +36 -0
- package/.gemini/skills/seven/reference/evaluations.md +38 -0
- package/.gemini/skills/seven/reference/exceptions.md +7 -0
- package/.gemini/skills/seven/reference/extract.md +42 -0
- package/.gemini/skills/seven/reference/harden.md +36 -0
- package/.gemini/skills/seven/reference/hooks.md +11 -0
- package/.gemini/skills/seven/reference/init.md +38 -0
- package/.gemini/skills/seven/reference/layout.md +33 -0
- package/.gemini/skills/seven/reference/live.md +106 -0
- package/.gemini/skills/seven/reference/motion-design.md +71 -0
- package/.gemini/skills/seven/reference/onboard.md +35 -0
- package/.gemini/skills/seven/reference/optimize.md +34 -0
- package/.gemini/skills/seven/reference/overdrive.md +32 -0
- package/.gemini/skills/seven/reference/polish.md +55 -0
- package/.gemini/skills/seven/reference/product.md +43 -0
- package/.gemini/skills/seven/reference/quieter.md +31 -0
- package/.gemini/skills/seven/reference/routing.md +28 -0
- package/.gemini/skills/seven/reference/shape.md +85 -0
- package/.gemini/skills/seven/reference/spatial-design.md +60 -0
- package/.gemini/skills/seven/reference/typeset.md +28 -0
- package/.gemini/skills/seven/reference/typography.md +43 -0
- package/.gemini/skills/seven/reference/ux-writing.md +47 -0
- package/.gemini/skills/seven/reference/visual-probes.md +36 -0
- package/.gemini/skills/seven/scripts/context-signals.mjs +94 -0
- package/.gemini/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.gemini/skills/seven/scripts/load-context.mjs +93 -0
- package/.gemini/skills/seven/scripts/update-check.mjs +120 -0
- package/.grok/agents/seven-asset-producer.md +40 -0
- package/.grok/agents/seven-finish-reviewer.md +36 -0
- package/.grok/agents/seven-manual-edit-applier.md +46 -0
- package/.grok/skills/seven/SKILL.md +167 -0
- package/.grok/skills/seven/reference/adapt.md +34 -0
- package/.grok/skills/seven/reference/animate.md +31 -0
- package/.grok/skills/seven/reference/app-shell.md +152 -0
- package/.grok/skills/seven/reference/audit.md +122 -0
- package/.grok/skills/seven/reference/bolder.md +34 -0
- package/.grok/skills/seven/reference/brand.md +31 -0
- package/.grok/skills/seven/reference/clarify.md +76 -0
- package/.grok/skills/seven/reference/color-and-contrast.md +84 -0
- package/.grok/skills/seven/reference/colorize.md +31 -0
- package/.grok/skills/seven/reference/critique.md +53 -0
- package/.grok/skills/seven/reference/delight.md +30 -0
- package/.grok/skills/seven/reference/distill.md +30 -0
- package/.grok/skills/seven/reference/doctor.md +7 -0
- package/.grok/skills/seven/reference/document.md +36 -0
- package/.grok/skills/seven/reference/evaluations.md +38 -0
- package/.grok/skills/seven/reference/exceptions.md +7 -0
- package/.grok/skills/seven/reference/extract.md +42 -0
- package/.grok/skills/seven/reference/harden.md +36 -0
- package/.grok/skills/seven/reference/hooks.md +11 -0
- package/.grok/skills/seven/reference/init.md +38 -0
- package/.grok/skills/seven/reference/layout.md +33 -0
- package/.grok/skills/seven/reference/live.md +106 -0
- package/.grok/skills/seven/reference/motion-design.md +71 -0
- package/.grok/skills/seven/reference/onboard.md +35 -0
- package/.grok/skills/seven/reference/optimize.md +34 -0
- package/.grok/skills/seven/reference/overdrive.md +32 -0
- package/.grok/skills/seven/reference/polish.md +55 -0
- package/.grok/skills/seven/reference/product.md +43 -0
- package/.grok/skills/seven/reference/quieter.md +31 -0
- package/.grok/skills/seven/reference/routing.md +28 -0
- package/.grok/skills/seven/reference/shape.md +85 -0
- package/.grok/skills/seven/reference/spatial-design.md +60 -0
- package/.grok/skills/seven/reference/typeset.md +28 -0
- package/.grok/skills/seven/reference/typography.md +43 -0
- package/.grok/skills/seven/reference/ux-writing.md +47 -0
- package/.grok/skills/seven/reference/visual-probes.md +36 -0
- package/.grok/skills/seven/scripts/context-signals.mjs +94 -0
- package/.grok/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.grok/skills/seven/scripts/load-context.mjs +93 -0
- package/.grok/skills/seven/scripts/update-check.mjs +120 -0
- package/.kiro/skills/seven/SKILL.md +161 -0
- package/.kiro/skills/seven/reference/adapt.md +34 -0
- package/.kiro/skills/seven/reference/animate.md +31 -0
- package/.kiro/skills/seven/reference/app-shell.md +152 -0
- package/.kiro/skills/seven/reference/audit.md +122 -0
- package/.kiro/skills/seven/reference/bolder.md +34 -0
- package/.kiro/skills/seven/reference/brand.md +31 -0
- package/.kiro/skills/seven/reference/clarify.md +76 -0
- package/.kiro/skills/seven/reference/color-and-contrast.md +84 -0
- package/.kiro/skills/seven/reference/colorize.md +31 -0
- package/.kiro/skills/seven/reference/critique.md +53 -0
- package/.kiro/skills/seven/reference/delight.md +30 -0
- package/.kiro/skills/seven/reference/distill.md +30 -0
- package/.kiro/skills/seven/reference/doctor.md +7 -0
- package/.kiro/skills/seven/reference/document.md +36 -0
- package/.kiro/skills/seven/reference/evaluations.md +38 -0
- package/.kiro/skills/seven/reference/exceptions.md +7 -0
- package/.kiro/skills/seven/reference/extract.md +42 -0
- package/.kiro/skills/seven/reference/harden.md +36 -0
- package/.kiro/skills/seven/reference/hooks.md +11 -0
- package/.kiro/skills/seven/reference/init.md +38 -0
- package/.kiro/skills/seven/reference/layout.md +33 -0
- package/.kiro/skills/seven/reference/live.md +106 -0
- package/.kiro/skills/seven/reference/motion-design.md +71 -0
- package/.kiro/skills/seven/reference/onboard.md +35 -0
- package/.kiro/skills/seven/reference/optimize.md +34 -0
- package/.kiro/skills/seven/reference/overdrive.md +32 -0
- package/.kiro/skills/seven/reference/polish.md +55 -0
- package/.kiro/skills/seven/reference/product.md +43 -0
- package/.kiro/skills/seven/reference/quieter.md +31 -0
- package/.kiro/skills/seven/reference/routing.md +28 -0
- package/.kiro/skills/seven/reference/shape.md +85 -0
- package/.kiro/skills/seven/reference/spatial-design.md +60 -0
- package/.kiro/skills/seven/reference/typeset.md +28 -0
- package/.kiro/skills/seven/reference/typography.md +43 -0
- package/.kiro/skills/seven/reference/ux-writing.md +47 -0
- package/.kiro/skills/seven/reference/visual-probes.md +36 -0
- package/.kiro/skills/seven/scripts/context-signals.mjs +94 -0
- package/.kiro/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.kiro/skills/seven/scripts/load-context.mjs +93 -0
- package/.kiro/skills/seven/scripts/update-check.mjs +120 -0
- package/.opencode/skills/seven/SKILL.md +167 -0
- package/.opencode/skills/seven/reference/adapt.md +34 -0
- package/.opencode/skills/seven/reference/animate.md +31 -0
- package/.opencode/skills/seven/reference/app-shell.md +152 -0
- package/.opencode/skills/seven/reference/audit.md +122 -0
- package/.opencode/skills/seven/reference/bolder.md +34 -0
- package/.opencode/skills/seven/reference/brand.md +31 -0
- package/.opencode/skills/seven/reference/clarify.md +76 -0
- package/.opencode/skills/seven/reference/color-and-contrast.md +84 -0
- package/.opencode/skills/seven/reference/colorize.md +31 -0
- package/.opencode/skills/seven/reference/critique.md +53 -0
- package/.opencode/skills/seven/reference/delight.md +30 -0
- package/.opencode/skills/seven/reference/distill.md +30 -0
- package/.opencode/skills/seven/reference/doctor.md +7 -0
- package/.opencode/skills/seven/reference/document.md +36 -0
- package/.opencode/skills/seven/reference/evaluations.md +38 -0
- package/.opencode/skills/seven/reference/exceptions.md +7 -0
- package/.opencode/skills/seven/reference/extract.md +42 -0
- package/.opencode/skills/seven/reference/harden.md +36 -0
- package/.opencode/skills/seven/reference/hooks.md +11 -0
- package/.opencode/skills/seven/reference/init.md +38 -0
- package/.opencode/skills/seven/reference/layout.md +33 -0
- package/.opencode/skills/seven/reference/live.md +106 -0
- package/.opencode/skills/seven/reference/motion-design.md +71 -0
- package/.opencode/skills/seven/reference/onboard.md +35 -0
- package/.opencode/skills/seven/reference/optimize.md +34 -0
- package/.opencode/skills/seven/reference/overdrive.md +32 -0
- package/.opencode/skills/seven/reference/polish.md +55 -0
- package/.opencode/skills/seven/reference/product.md +43 -0
- package/.opencode/skills/seven/reference/quieter.md +31 -0
- package/.opencode/skills/seven/reference/routing.md +28 -0
- package/.opencode/skills/seven/reference/shape.md +85 -0
- package/.opencode/skills/seven/reference/spatial-design.md +60 -0
- package/.opencode/skills/seven/reference/typeset.md +28 -0
- package/.opencode/skills/seven/reference/typography.md +43 -0
- package/.opencode/skills/seven/reference/ux-writing.md +47 -0
- package/.opencode/skills/seven/reference/visual-probes.md +36 -0
- package/.opencode/skills/seven/scripts/context-signals.mjs +94 -0
- package/.opencode/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.opencode/skills/seven/scripts/load-context.mjs +93 -0
- package/.opencode/skills/seven/scripts/update-check.mjs +120 -0
- package/.pi/skills/seven/SKILL.md +165 -0
- package/.pi/skills/seven/reference/adapt.md +34 -0
- package/.pi/skills/seven/reference/animate.md +31 -0
- package/.pi/skills/seven/reference/app-shell.md +152 -0
- package/.pi/skills/seven/reference/audit.md +122 -0
- package/.pi/skills/seven/reference/bolder.md +34 -0
- package/.pi/skills/seven/reference/brand.md +31 -0
- package/.pi/skills/seven/reference/clarify.md +76 -0
- package/.pi/skills/seven/reference/color-and-contrast.md +84 -0
- package/.pi/skills/seven/reference/colorize.md +31 -0
- package/.pi/skills/seven/reference/critique.md +53 -0
- package/.pi/skills/seven/reference/delight.md +30 -0
- package/.pi/skills/seven/reference/distill.md +30 -0
- package/.pi/skills/seven/reference/doctor.md +7 -0
- package/.pi/skills/seven/reference/document.md +36 -0
- package/.pi/skills/seven/reference/evaluations.md +38 -0
- package/.pi/skills/seven/reference/exceptions.md +7 -0
- package/.pi/skills/seven/reference/extract.md +42 -0
- package/.pi/skills/seven/reference/harden.md +36 -0
- package/.pi/skills/seven/reference/hooks.md +11 -0
- package/.pi/skills/seven/reference/init.md +38 -0
- package/.pi/skills/seven/reference/layout.md +33 -0
- package/.pi/skills/seven/reference/live.md +106 -0
- package/.pi/skills/seven/reference/motion-design.md +71 -0
- package/.pi/skills/seven/reference/onboard.md +35 -0
- package/.pi/skills/seven/reference/optimize.md +34 -0
- package/.pi/skills/seven/reference/overdrive.md +32 -0
- package/.pi/skills/seven/reference/polish.md +55 -0
- package/.pi/skills/seven/reference/product.md +43 -0
- package/.pi/skills/seven/reference/quieter.md +31 -0
- package/.pi/skills/seven/reference/routing.md +28 -0
- package/.pi/skills/seven/reference/shape.md +85 -0
- package/.pi/skills/seven/reference/spatial-design.md +60 -0
- package/.pi/skills/seven/reference/typeset.md +28 -0
- package/.pi/skills/seven/reference/typography.md +43 -0
- package/.pi/skills/seven/reference/ux-writing.md +47 -0
- package/.pi/skills/seven/reference/visual-probes.md +36 -0
- package/.pi/skills/seven/scripts/context-signals.mjs +94 -0
- package/.pi/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.pi/skills/seven/scripts/load-context.mjs +93 -0
- package/.pi/skills/seven/scripts/update-check.mjs +120 -0
- package/.qoder/skills/seven/SKILL.md +167 -0
- package/.qoder/skills/seven/reference/adapt.md +34 -0
- package/.qoder/skills/seven/reference/animate.md +31 -0
- package/.qoder/skills/seven/reference/app-shell.md +152 -0
- package/.qoder/skills/seven/reference/audit.md +122 -0
- package/.qoder/skills/seven/reference/bolder.md +34 -0
- package/.qoder/skills/seven/reference/brand.md +31 -0
- package/.qoder/skills/seven/reference/clarify.md +76 -0
- package/.qoder/skills/seven/reference/color-and-contrast.md +84 -0
- package/.qoder/skills/seven/reference/colorize.md +31 -0
- package/.qoder/skills/seven/reference/critique.md +53 -0
- package/.qoder/skills/seven/reference/delight.md +30 -0
- package/.qoder/skills/seven/reference/distill.md +30 -0
- package/.qoder/skills/seven/reference/doctor.md +7 -0
- package/.qoder/skills/seven/reference/document.md +36 -0
- package/.qoder/skills/seven/reference/evaluations.md +38 -0
- package/.qoder/skills/seven/reference/exceptions.md +7 -0
- package/.qoder/skills/seven/reference/extract.md +42 -0
- package/.qoder/skills/seven/reference/harden.md +36 -0
- package/.qoder/skills/seven/reference/hooks.md +11 -0
- package/.qoder/skills/seven/reference/init.md +38 -0
- package/.qoder/skills/seven/reference/layout.md +33 -0
- package/.qoder/skills/seven/reference/live.md +106 -0
- package/.qoder/skills/seven/reference/motion-design.md +71 -0
- package/.qoder/skills/seven/reference/onboard.md +35 -0
- package/.qoder/skills/seven/reference/optimize.md +34 -0
- package/.qoder/skills/seven/reference/overdrive.md +32 -0
- package/.qoder/skills/seven/reference/polish.md +55 -0
- package/.qoder/skills/seven/reference/product.md +43 -0
- package/.qoder/skills/seven/reference/quieter.md +31 -0
- package/.qoder/skills/seven/reference/routing.md +28 -0
- package/.qoder/skills/seven/reference/shape.md +85 -0
- package/.qoder/skills/seven/reference/spatial-design.md +60 -0
- package/.qoder/skills/seven/reference/typeset.md +28 -0
- package/.qoder/skills/seven/reference/typography.md +43 -0
- package/.qoder/skills/seven/reference/ux-writing.md +47 -0
- package/.qoder/skills/seven/reference/visual-probes.md +36 -0
- package/.qoder/skills/seven/scripts/context-signals.mjs +94 -0
- package/.qoder/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.qoder/skills/seven/scripts/load-context.mjs +93 -0
- package/.qoder/skills/seven/scripts/update-check.mjs +120 -0
- package/.rovodev/skills/seven/SKILL.md +167 -0
- package/.rovodev/skills/seven/reference/adapt.md +34 -0
- package/.rovodev/skills/seven/reference/animate.md +31 -0
- package/.rovodev/skills/seven/reference/app-shell.md +152 -0
- package/.rovodev/skills/seven/reference/audit.md +122 -0
- package/.rovodev/skills/seven/reference/bolder.md +34 -0
- package/.rovodev/skills/seven/reference/brand.md +31 -0
- package/.rovodev/skills/seven/reference/clarify.md +76 -0
- package/.rovodev/skills/seven/reference/color-and-contrast.md +84 -0
- package/.rovodev/skills/seven/reference/colorize.md +31 -0
- package/.rovodev/skills/seven/reference/critique.md +53 -0
- package/.rovodev/skills/seven/reference/delight.md +30 -0
- package/.rovodev/skills/seven/reference/distill.md +30 -0
- package/.rovodev/skills/seven/reference/doctor.md +7 -0
- package/.rovodev/skills/seven/reference/document.md +36 -0
- package/.rovodev/skills/seven/reference/evaluations.md +38 -0
- package/.rovodev/skills/seven/reference/exceptions.md +7 -0
- package/.rovodev/skills/seven/reference/extract.md +42 -0
- package/.rovodev/skills/seven/reference/harden.md +36 -0
- package/.rovodev/skills/seven/reference/hooks.md +11 -0
- package/.rovodev/skills/seven/reference/init.md +38 -0
- package/.rovodev/skills/seven/reference/layout.md +33 -0
- package/.rovodev/skills/seven/reference/live.md +106 -0
- package/.rovodev/skills/seven/reference/motion-design.md +71 -0
- package/.rovodev/skills/seven/reference/onboard.md +35 -0
- package/.rovodev/skills/seven/reference/optimize.md +34 -0
- package/.rovodev/skills/seven/reference/overdrive.md +32 -0
- package/.rovodev/skills/seven/reference/polish.md +55 -0
- package/.rovodev/skills/seven/reference/product.md +43 -0
- package/.rovodev/skills/seven/reference/quieter.md +31 -0
- package/.rovodev/skills/seven/reference/routing.md +28 -0
- package/.rovodev/skills/seven/reference/shape.md +85 -0
- package/.rovodev/skills/seven/reference/spatial-design.md +60 -0
- package/.rovodev/skills/seven/reference/typeset.md +28 -0
- package/.rovodev/skills/seven/reference/typography.md +43 -0
- package/.rovodev/skills/seven/reference/ux-writing.md +47 -0
- package/.rovodev/skills/seven/reference/visual-probes.md +36 -0
- package/.rovodev/skills/seven/scripts/context-signals.mjs +94 -0
- package/.rovodev/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.rovodev/skills/seven/scripts/load-context.mjs +93 -0
- package/.rovodev/skills/seven/scripts/update-check.mjs +120 -0
- package/.trae/skills/seven/SKILL.md +163 -0
- package/.trae/skills/seven/reference/adapt.md +34 -0
- package/.trae/skills/seven/reference/animate.md +31 -0
- package/.trae/skills/seven/reference/app-shell.md +152 -0
- package/.trae/skills/seven/reference/audit.md +122 -0
- package/.trae/skills/seven/reference/bolder.md +34 -0
- package/.trae/skills/seven/reference/brand.md +31 -0
- package/.trae/skills/seven/reference/clarify.md +76 -0
- package/.trae/skills/seven/reference/color-and-contrast.md +84 -0
- package/.trae/skills/seven/reference/colorize.md +31 -0
- package/.trae/skills/seven/reference/critique.md +53 -0
- package/.trae/skills/seven/reference/delight.md +30 -0
- package/.trae/skills/seven/reference/distill.md +30 -0
- package/.trae/skills/seven/reference/doctor.md +7 -0
- package/.trae/skills/seven/reference/document.md +36 -0
- package/.trae/skills/seven/reference/evaluations.md +38 -0
- package/.trae/skills/seven/reference/exceptions.md +7 -0
- package/.trae/skills/seven/reference/extract.md +42 -0
- package/.trae/skills/seven/reference/harden.md +36 -0
- package/.trae/skills/seven/reference/hooks.md +11 -0
- package/.trae/skills/seven/reference/init.md +38 -0
- package/.trae/skills/seven/reference/layout.md +33 -0
- package/.trae/skills/seven/reference/live.md +106 -0
- package/.trae/skills/seven/reference/motion-design.md +71 -0
- package/.trae/skills/seven/reference/onboard.md +35 -0
- package/.trae/skills/seven/reference/optimize.md +34 -0
- package/.trae/skills/seven/reference/overdrive.md +32 -0
- package/.trae/skills/seven/reference/polish.md +55 -0
- package/.trae/skills/seven/reference/product.md +43 -0
- package/.trae/skills/seven/reference/quieter.md +31 -0
- package/.trae/skills/seven/reference/routing.md +28 -0
- package/.trae/skills/seven/reference/shape.md +85 -0
- package/.trae/skills/seven/reference/spatial-design.md +60 -0
- package/.trae/skills/seven/reference/typeset.md +28 -0
- package/.trae/skills/seven/reference/typography.md +43 -0
- package/.trae/skills/seven/reference/ux-writing.md +47 -0
- package/.trae/skills/seven/reference/visual-probes.md +36 -0
- package/.trae/skills/seven/scripts/context-signals.mjs +94 -0
- package/.trae/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.trae/skills/seven/scripts/load-context.mjs +93 -0
- package/.trae/skills/seven/scripts/update-check.mjs +120 -0
- package/.trae-cn/skills/seven/SKILL.md +163 -0
- package/.trae-cn/skills/seven/reference/adapt.md +34 -0
- package/.trae-cn/skills/seven/reference/animate.md +31 -0
- package/.trae-cn/skills/seven/reference/app-shell.md +152 -0
- package/.trae-cn/skills/seven/reference/audit.md +122 -0
- package/.trae-cn/skills/seven/reference/bolder.md +34 -0
- package/.trae-cn/skills/seven/reference/brand.md +31 -0
- package/.trae-cn/skills/seven/reference/clarify.md +76 -0
- package/.trae-cn/skills/seven/reference/color-and-contrast.md +84 -0
- package/.trae-cn/skills/seven/reference/colorize.md +31 -0
- package/.trae-cn/skills/seven/reference/critique.md +53 -0
- package/.trae-cn/skills/seven/reference/delight.md +30 -0
- package/.trae-cn/skills/seven/reference/distill.md +30 -0
- package/.trae-cn/skills/seven/reference/doctor.md +7 -0
- package/.trae-cn/skills/seven/reference/document.md +36 -0
- package/.trae-cn/skills/seven/reference/evaluations.md +38 -0
- package/.trae-cn/skills/seven/reference/exceptions.md +7 -0
- package/.trae-cn/skills/seven/reference/extract.md +42 -0
- package/.trae-cn/skills/seven/reference/harden.md +36 -0
- package/.trae-cn/skills/seven/reference/hooks.md +11 -0
- package/.trae-cn/skills/seven/reference/init.md +38 -0
- package/.trae-cn/skills/seven/reference/layout.md +33 -0
- package/.trae-cn/skills/seven/reference/live.md +106 -0
- package/.trae-cn/skills/seven/reference/motion-design.md +71 -0
- package/.trae-cn/skills/seven/reference/onboard.md +35 -0
- package/.trae-cn/skills/seven/reference/optimize.md +34 -0
- package/.trae-cn/skills/seven/reference/overdrive.md +32 -0
- package/.trae-cn/skills/seven/reference/polish.md +55 -0
- package/.trae-cn/skills/seven/reference/product.md +43 -0
- package/.trae-cn/skills/seven/reference/quieter.md +31 -0
- package/.trae-cn/skills/seven/reference/routing.md +28 -0
- package/.trae-cn/skills/seven/reference/shape.md +85 -0
- package/.trae-cn/skills/seven/reference/spatial-design.md +60 -0
- package/.trae-cn/skills/seven/reference/typeset.md +28 -0
- package/.trae-cn/skills/seven/reference/typography.md +43 -0
- package/.trae-cn/skills/seven/reference/ux-writing.md +47 -0
- package/.trae-cn/skills/seven/reference/visual-probes.md +36 -0
- package/.trae-cn/skills/seven/scripts/context-signals.mjs +94 -0
- package/.trae-cn/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.trae-cn/skills/seven/scripts/load-context.mjs +93 -0
- package/.trae-cn/skills/seven/scripts/update-check.mjs +120 -0
- package/.vibe/skills/seven/SKILL.md +166 -0
- package/.vibe/skills/seven/reference/adapt.md +34 -0
- package/.vibe/skills/seven/reference/animate.md +31 -0
- package/.vibe/skills/seven/reference/app-shell.md +152 -0
- package/.vibe/skills/seven/reference/audit.md +122 -0
- package/.vibe/skills/seven/reference/bolder.md +34 -0
- package/.vibe/skills/seven/reference/brand.md +31 -0
- package/.vibe/skills/seven/reference/clarify.md +76 -0
- package/.vibe/skills/seven/reference/color-and-contrast.md +84 -0
- package/.vibe/skills/seven/reference/colorize.md +31 -0
- package/.vibe/skills/seven/reference/critique.md +53 -0
- package/.vibe/skills/seven/reference/delight.md +30 -0
- package/.vibe/skills/seven/reference/distill.md +30 -0
- package/.vibe/skills/seven/reference/doctor.md +7 -0
- package/.vibe/skills/seven/reference/document.md +36 -0
- package/.vibe/skills/seven/reference/evaluations.md +38 -0
- package/.vibe/skills/seven/reference/exceptions.md +7 -0
- package/.vibe/skills/seven/reference/extract.md +42 -0
- package/.vibe/skills/seven/reference/harden.md +36 -0
- package/.vibe/skills/seven/reference/hooks.md +11 -0
- package/.vibe/skills/seven/reference/init.md +38 -0
- package/.vibe/skills/seven/reference/layout.md +33 -0
- package/.vibe/skills/seven/reference/live.md +106 -0
- package/.vibe/skills/seven/reference/motion-design.md +71 -0
- package/.vibe/skills/seven/reference/onboard.md +35 -0
- package/.vibe/skills/seven/reference/optimize.md +34 -0
- package/.vibe/skills/seven/reference/overdrive.md +32 -0
- package/.vibe/skills/seven/reference/polish.md +55 -0
- package/.vibe/skills/seven/reference/product.md +43 -0
- package/.vibe/skills/seven/reference/quieter.md +31 -0
- package/.vibe/skills/seven/reference/routing.md +28 -0
- package/.vibe/skills/seven/reference/shape.md +85 -0
- package/.vibe/skills/seven/reference/spatial-design.md +60 -0
- package/.vibe/skills/seven/reference/typeset.md +28 -0
- package/.vibe/skills/seven/reference/typography.md +43 -0
- package/.vibe/skills/seven/reference/ux-writing.md +47 -0
- package/.vibe/skills/seven/reference/visual-probes.md +36 -0
- package/.vibe/skills/seven/scripts/context-signals.mjs +94 -0
- package/.vibe/skills/seven/scripts/critique-storage.mjs +155 -0
- package/.vibe/skills/seven/scripts/load-context.mjs +93 -0
- package/.vibe/skills/seven/scripts/update-check.mjs +120 -0
- package/README.md +51 -90
- package/cli/bin/seven.mjs +0 -0
- package/cli/engine/browser/injected/index.mjs +62 -13
- package/cli/engine/detect-antipatterns-browser.js +4739 -19
- package/cli/engine/detect-antipatterns.mjs +1 -0
- package/cli/engine/engines/browser/detect-url.mjs +366 -3
- package/cli/engine/engines/regex/detect-text.mjs +469 -1
- package/cli/engine/engines/static-html/detect-html.mjs +131 -0
- package/cli/engine/registry/seven-antipatterns.mjs +379 -4
- package/cli/engine/rules/checks.mjs +360 -1
- package/cli/engine/shared/tokens.mjs +19 -0
- package/cli/engine/token-data.generated.mjs +4025 -0
- package/docs/detector-rules.md +277 -38
- package/docs/upstream-parity.json +242 -0
- package/extension/README.md +5 -0
- package/extension/background/service-worker.js +134 -0
- package/extension/content/content-script.js +340 -0
- package/extension/detector/detect.js +7816 -0
- package/extension/devtools/devtools.html +1 -0
- package/extension/devtools/devtools.js +3 -0
- package/extension/devtools/panel.css +66 -0
- package/extension/devtools/panel.html +3 -0
- package/extension/devtools/panel.js +37 -0
- package/extension/manifest.json +22 -0
- package/extension/popup/popup.css +106 -0
- package/extension/popup/popup.html +27 -0
- package/extension/popup/popup.js +74 -0
- package/package.json +19 -8
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Live — reversible browser iteration
|
|
2
|
+
|
|
3
|
+
Run an interactive Seven session against a rendered React 19 surface. The browser may preview inert HTML/CSS directions, but accepted previews become production only after a source edit using installed Seven components, declared variants, tokens, focused tests, and `seven check`.
|
|
4
|
+
|
|
5
|
+
## Phase 0 — prerequisites
|
|
6
|
+
|
|
7
|
+
1. Load the normal Seven context and run `seven doctor --quick --target <source>`.
|
|
8
|
+
2. Confirm the app is a local or explicitly trusted development origin and its dev server is already running.
|
|
9
|
+
3. Resolve the smallest source target inside the consumer project. Native and Svelte adapters are intentionally unsupported.
|
|
10
|
+
4. Confirm the packaged extension is available:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
seven extension path
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
npm cannot activate a browser extension without browser/user consent. On first use, load that directory unpacked from `chrome://extensions`; this is the only manual installation step.
|
|
17
|
+
|
|
18
|
+
## Phase 1 — start and connect
|
|
19
|
+
|
|
20
|
+
Start the loopback bridge in a persistent/background terminal:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
seven live start --url http://127.0.0.1:5173/route --target src/path/Surface.tsx
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The command prints a `serverUrl` and random session `token`. Treat the token as ephemeral capability data: paste it into Seven UI Guardian, do not put it in chat transcripts, source, screenshots, shell history snippets, or commits. The extension retains it only in memory.
|
|
27
|
+
|
|
28
|
+
The bridge binds to `127.0.0.1`, validates extension/local origins, restricts page events to the declared app origin, caps payloads, rejects sensitive fields, and accepts preview HTML/CSS only. It never accepts JavaScript, event handlers, embedded documents, CSS imports, or CSS network URLs.
|
|
29
|
+
|
|
30
|
+
## Phase 2 — event loop
|
|
31
|
+
|
|
32
|
+
Keep a one-shot foreground poll active whenever the user can interact with the Live panel:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
seven live poll
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Dispatch the returned event, reply, then poll again immediately.
|
|
39
|
+
|
|
40
|
+
### `generate`
|
|
41
|
+
|
|
42
|
+
The event contains the action, optional prompt, target selector, bounded outer HTML, a Seven-relevant computed-style subset, viewport rectangle, page URL, and source target. It contains no cookies, request bodies, headers, browser storage, or network responses.
|
|
43
|
+
|
|
44
|
+
1. Load the action's normal Seven reference plus [visual-probes.md](visual-probes.md).
|
|
45
|
+
2. Use the target evidence and installed Seven contracts; do not infer a new token or component API from computed CSS.
|
|
46
|
+
3. Produce one to three materially distinct directions. Each direction must be one inert HTML root plus optional local preview CSS.
|
|
47
|
+
4. Save the payload inside the ignored `.seven/live/` directory and deliver it:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"status": "done",
|
|
52
|
+
"message": "Direções que preservam o job e o release Seven instalado.",
|
|
53
|
+
"variants": [
|
|
54
|
+
{
|
|
55
|
+
"id": "hierarchy",
|
|
56
|
+
"label": "Hierarquia explícita",
|
|
57
|
+
"html": "<section>...</section>",
|
|
58
|
+
"css": ".seven-live-probe { color: var(--foreground); }"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
seven live reply --id <event-id> --file .seven/live/reply-<event-id>.json
|
|
66
|
+
seven live poll
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Preview CSS is disposable evidence. Do not copy it mechanically into the source.
|
|
70
|
+
|
|
71
|
+
### `steer`
|
|
72
|
+
|
|
73
|
+
Read the message, make only the requested source/navigation adjustment when authorized, and reply with a short `message`. Do not treat steering as permission to redesign adjacent UI.
|
|
74
|
+
|
|
75
|
+
### `accept`
|
|
76
|
+
|
|
77
|
+
Acceptance identifies the chosen direction and current preview evidence. It authorizes applying that direction to the declared source target, not pasting DOM output blindly.
|
|
78
|
+
|
|
79
|
+
1. Re-resolve the real React component and any shared composition.
|
|
80
|
+
2. Apply the smallest source edit using existing Seven components, variants, tokens, semantics, and pt-BR copy.
|
|
81
|
+
3. Run focused tests and `seven check --file <changed-file>`.
|
|
82
|
+
4. Refresh/reinspect the rendered surface. If source and preview conflict, source truth wins and the difference is reported.
|
|
83
|
+
5. Reply `done` to the accept event and poll again.
|
|
84
|
+
|
|
85
|
+
Use the manual-edit-applier agent when the provider exposes it. The finish-reviewer may independently verify the result; neither agent may invent missing Seven contracts.
|
|
86
|
+
|
|
87
|
+
### `discard`
|
|
88
|
+
|
|
89
|
+
The extension restores the original DOM snapshot. Reply `done`; make no source edit.
|
|
90
|
+
|
|
91
|
+
## Recovery and completion
|
|
92
|
+
|
|
93
|
+
The append-only journal and session metadata live under ignored `.seven/live/` state:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
seven live status
|
|
97
|
+
seven live start --resume --url <same-url> --target <same-target>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
An unanswered event is replayed after bridge restart. A replied event is not reissued. Stop explicitly when the user exits:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
seven live stop
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Report accepted/discarded directions, source files changed, Seven components/variants/tokens used, checks run, unresolved conflicts, and confirmation that the temporary browser layer was disconnected. Never create `.github/**` or persist the token.
|
|
@@ -27,7 +27,7 @@ Every clickable affordance in Seven gets the same micro-press, not just `<Button
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Apply to `<button>`, `<a>` with `role="button"`, the trigger row of `<Combobox>`, the avatar pill in the topbar, table row click affordances, every interactive list item. The detector ships a `missing-tactile-press` rule
|
|
30
|
+
Apply to `<button>`, `<a>` with `role="button"`, the trigger row of `<Combobox>`, the avatar pill in the topbar, table row click affordances, every interactive list item. The detector ships a `missing-tactile-press` rule that catches affordances that opted out.
|
|
31
31
|
|
|
32
32
|
Disabled state does not press. Loading state does not press. Reduced-motion users do not press: the entire system honors `prefers-reduced-motion: reduce` and falls back to instant state changes plus an opacity fade.
|
|
33
33
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Onboard — first-run and activation UX
|
|
2
|
+
|
|
3
|
+
Design the product experience for a user who has not yet completed setup or reached first value. This is not context capture; use `init` for `PRODUCT.md` and surface briefs.
|
|
4
|
+
|
|
5
|
+
## Define activation
|
|
6
|
+
|
|
7
|
+
From product context, identify:
|
|
8
|
+
|
|
9
|
+
- who is new and what they already know;
|
|
10
|
+
- the first meaningful outcome, not merely account completion;
|
|
11
|
+
- required versus deferrable setup;
|
|
12
|
+
- permissions, external dependencies, waiting states, and failure recovery;
|
|
13
|
+
- whether the user can explore safely before connecting real data.
|
|
14
|
+
|
|
15
|
+
Do not invent an activation metric or mandatory step. Ask when the product decision is absent.
|
|
16
|
+
|
|
17
|
+
## Shape the shortest safe path
|
|
18
|
+
|
|
19
|
+
- Start in context, preferably where the product will be used, rather than a detached tour.
|
|
20
|
+
- Ask only for information needed for the next meaningful action.
|
|
21
|
+
- Explain permissions immediately before requesting them and provide a retry/recovery path.
|
|
22
|
+
- Use real previews or safe sample data when it reduces uncertainty; label it clearly.
|
|
23
|
+
- Preserve progress, support resume, and make optional steps skippable.
|
|
24
|
+
- Distinguish first-use empty state from a filtered/no-results state.
|
|
25
|
+
- End at the activated product surface with a clear next action, not a celebratory dead end.
|
|
26
|
+
|
|
27
|
+
Use existing Seven Stepper, Form, Alert, Dialog, Progress, Skeleton, EmptyState, Button, and navigation contracts where available. Missing components/variants are Seven gaps, not permission for raw local substitutes.
|
|
28
|
+
|
|
29
|
+
## State matrix
|
|
30
|
+
|
|
31
|
+
Cover new, returning-incomplete, invitation, permission-denied, integration-waiting, validation-error, partial-success, complete, and abandoned/resumed states. Include keyboard, screen-reader, mobile, reduced-motion, and long-copy behavior.
|
|
32
|
+
|
|
33
|
+
## Verify
|
|
34
|
+
|
|
35
|
+
Measure steps to first value, avoid duplicate data entry, test refresh/back/retry, and prove the user can recover without support. Run Seven checks and relevant E2E paths. Report assumptions that still need product validation.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Optimize — measured UI performance
|
|
2
|
+
|
|
3
|
+
Improve measured and perceived performance without changing product behavior or sacrificing accessibility and Seven fidelity.
|
|
4
|
+
|
|
5
|
+
## Establish a baseline
|
|
6
|
+
|
|
7
|
+
Measure the real target and record environment, viewport, data size, cache state, and build mode. Use evidence appropriate to the problem:
|
|
8
|
+
|
|
9
|
+
- browser performance trace and React Profiler;
|
|
10
|
+
- LCP, INP, CLS, long tasks, layout/recalc cost, and interaction latency;
|
|
11
|
+
- JavaScript/CSS bundle analysis and route chunks;
|
|
12
|
+
- image/font requests, transfer size, decoding, and cache behavior;
|
|
13
|
+
- render counts and expensive computations under realistic data;
|
|
14
|
+
- memory growth during repeated navigation or live updates.
|
|
15
|
+
|
|
16
|
+
Do not optimize from intuition or a synthetic score alone.
|
|
17
|
+
|
|
18
|
+
## Fix the dominant cost
|
|
19
|
+
|
|
20
|
+
- Remove work before memoizing it.
|
|
21
|
+
- Keep state local, selectors narrow, and stable references where measurement proves rerender cost.
|
|
22
|
+
- Lazy-load route/feature code and heavy assets at a meaningful boundary; do not create waterfalls.
|
|
23
|
+
- Size and compress images, set dimensions, use responsive sources, and defer offscreen media.
|
|
24
|
+
- Load only used font weights; keep fallback metrics compatible.
|
|
25
|
+
- Virtualize only lists whose measured size warrants it, while preserving keyboard and screen-reader access.
|
|
26
|
+
- Move CPU-heavy deterministic work off the render path or into a worker when justified.
|
|
27
|
+
- Pause invisible animation, polling, canvas, and observers.
|
|
28
|
+
- Preserve Skeleton/Spinner semantics and avoid hiding real latency behind excessive choreography.
|
|
29
|
+
|
|
30
|
+
React 19 patterns must match the consumer architecture. Do not add `useMemo`, `memo`, Suspense, a worker, or a dependency speculatively.
|
|
31
|
+
|
|
32
|
+
## Verify
|
|
33
|
+
|
|
34
|
+
Repeat the same measurement at least three times and compare medians. Confirm no visual, keyboard, focus, screen-reader, loading, error, or data-freshness regression. Report before/after numbers, variance, remaining bottleneck, and test scope.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Overdrive — one justified technical leap
|
|
2
|
+
|
|
3
|
+
Apply a single high-ambition enhancement only after the surface is already sound. The technique must create a product outcome users can feel, not advertise implementation novelty.
|
|
4
|
+
|
|
5
|
+
## Admission test
|
|
6
|
+
|
|
7
|
+
Proceed only when all are true:
|
|
8
|
+
|
|
9
|
+
- context, core flow, accessibility, responsive behavior, and Seven checks are healthy;
|
|
10
|
+
- one specific opportunity has a measurable user benefit;
|
|
11
|
+
- simpler Seven-native approaches cannot deliver the same result;
|
|
12
|
+
- the target browsers/devices and performance budget are known;
|
|
13
|
+
- the user explicitly approves any new dependency, experimental browser API, generated asset, or meaningful maintenance burden.
|
|
14
|
+
|
|
15
|
+
Otherwise route to `polish`, `harden`, or `optimize`.
|
|
16
|
+
|
|
17
|
+
## Suitable outcomes
|
|
18
|
+
|
|
19
|
+
- spatial continuity that makes a complex state transition immediately understandable;
|
|
20
|
+
- virtualization or worker-backed computation that keeps a large operational surface responsive;
|
|
21
|
+
- a high-density visualization that remains accessible and useful at real data scale;
|
|
22
|
+
- a reversible, progressive enhancement that materially reduces time or error in the primary job.
|
|
23
|
+
|
|
24
|
+
Marketing spectacle, shaders, parallax, audio, device APIs, and cinematic scroll are not defaults for Seven product surfaces. They require explicit product/brand context and a fallback that remains complete.
|
|
25
|
+
|
|
26
|
+
## Engineering contract
|
|
27
|
+
|
|
28
|
+
Define baseline, target metric, supported matrix, fallback, reduced-motion behavior, failure mode, cleanup/lifecycle, and removal plan before coding. Isolate the enhancement behind a small boundary. Keep Seven components/tokens as the visible control language.
|
|
29
|
+
|
|
30
|
+
## Verify
|
|
31
|
+
|
|
32
|
+
Test the baseline and enhanced paths on representative mid-range hardware, interruption/repeat use, keyboard/screen reader, reduced motion, slow network, unsupported browser, and runtime failure. Ship only if the measured gain survives those paths and the plain fallback remains good.
|
|
@@ -19,12 +19,12 @@ Every polish finding falls into one of three buckets. Name the bucket in your fi
|
|
|
19
19
|
1. **Run the detector first**:
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
|
|
22
|
+
seven check --file <path>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
The deterministic findings cover token drift and identity-level violations. Address them before manual review.
|
|
26
26
|
|
|
27
|
-
2. **Read the implementation
|
|
27
|
+
2. **Read the implementation against the exact installed registry metadata and component API.** If the variant is absent, flag it as a "variant invented in code" finding; do not reach into Figma or a newer release from a consumer project.
|
|
28
28
|
|
|
29
29
|
3. **Manual review pass** covering:
|
|
30
30
|
- Spacing rhythm (vary intentionally; same padding everywhere reads flat).
|
|
@@ -43,13 +43,13 @@ Every polish finding falls into one of three buckets. Name the bucket in your fi
|
|
|
43
43
|
|
|
44
44
|
## What polish never does
|
|
45
45
|
|
|
46
|
-
- Add new variants that do not exist in
|
|
46
|
+
- Add new variants that do not exist in the installed Seven contract. Surface the gap, do not invent.
|
|
47
47
|
- Refactor unrelated code because it "looks bad". Surgical changes only.
|
|
48
48
|
- Change public component APIs. If a prop should change, that is a separate proposal, not polish.
|
|
49
|
-
-
|
|
49
|
+
- Define or override visual tokens in the consumer. Token changes belong in the Seven repository and a new release, not in polish.
|
|
50
50
|
|
|
51
51
|
## Refusals
|
|
52
52
|
|
|
53
53
|
- "Refactor the whole file while you are in there" — Polish is surgical. Document the additional issues as a follow-up, do not bundle them.
|
|
54
54
|
- "Add a fancy hover state to make it pop" — Seven hover is the tactile press. Adding decorative hover is drift. Surface and decline.
|
|
55
|
-
- "Replace the import with a custom component because the variant is missing" — That is a
|
|
55
|
+
- "Replace the import with a custom component because the variant is missing" — That is a Seven contract request. Document it, ask the user, do not duplicate.
|
|
@@ -38,8 +38,6 @@ Surface the conflict, do not silently comply.
|
|
|
38
38
|
- "Add a glow under the active row" — Seven does not use glow on chrome. Recommend a brand-tinted background or a left-accent rule that is part of the row's structure, not a decorative halo.
|
|
39
39
|
- "Show this metric in a gradient" — Seven prose forbids gradient text. The metric belongs in a solid `var(--foreground)` with hierarchy from scale and weight.
|
|
40
40
|
|
|
41
|
-
##
|
|
41
|
+
## Workflows that apply
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
For Phase 2 brand register surfaces, load [reference/brand.md](brand.md) instead. The shared design laws in `SKILL.md` apply to both.
|
|
43
|
+
Every Seven workflow may apply to product surfaces when its stated preconditions are met. Load [reference/brand.md](brand.md) only for public marketing/storytelling surfaces. The shared design laws and installed release authority apply to both registers.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Quieter — less noise, preserved hierarchy
|
|
2
|
+
|
|
3
|
+
Reduce visual intensity without turning the interface into undifferentiated grey UI.
|
|
4
|
+
|
|
5
|
+
## Find the noise
|
|
6
|
+
|
|
7
|
+
Inspect the rendered surface and identify evidence, not adjectives:
|
|
8
|
+
|
|
9
|
+
- too many filled actions or semantic colors;
|
|
10
|
+
- repeated cards, borders, badges, icons, labels, or dividers that convey no new hierarchy;
|
|
11
|
+
- competing font weights and size jumps;
|
|
12
|
+
- decorative motion, gradients, glow, stripes, shadows, or hover transforms;
|
|
13
|
+
- dense metadata presented at the same priority as the primary task;
|
|
14
|
+
- multiple simultaneous attention anchors.
|
|
15
|
+
|
|
16
|
+
Name the one or two elements that must remain prominent.
|
|
17
|
+
|
|
18
|
+
## Reduce with Seven roles
|
|
19
|
+
|
|
20
|
+
- Keep the true primary action; demote siblings to declared secondary, outline, ghost, or link variants.
|
|
21
|
+
- Replace decorative color with `background`, `surface`, `muted`, `border`, and foreground roles already present in Seven.
|
|
22
|
+
- Remove nested cards and use spacing or a divider when grouping is enough.
|
|
23
|
+
- Keep borders for hierarchy and shadows only for overlays.
|
|
24
|
+
- Reduce decorative motion; retain state feedback and focus visibility.
|
|
25
|
+
- Collapse repeated explanatory copy while preserving information required for safe decisions.
|
|
26
|
+
|
|
27
|
+
Do not change token values, lower contrast below WCAG AA, make targets smaller, remove status meaning, or invent a “subtle” local palette.
|
|
28
|
+
|
|
29
|
+
## Verification
|
|
30
|
+
|
|
31
|
+
The primary task remains obvious; semantic states remain distinguishable without color alone; keyboard/focus behavior is unchanged; and all changed files pass Seven checks. Report what was removed, what stayed intentionally strong, and why.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# No-argument routing
|
|
2
|
+
|
|
3
|
+
Use this workflow when Seven is invoked without an intent. Do not dump a generic command list first and do not auto-run a workflow.
|
|
4
|
+
|
|
5
|
+
1. Load the normal Seven context.
|
|
6
|
+
2. Run once:
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
node .claude/skills/seven/scripts/context-signals.mjs --target <target>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
3. Recommend the two or three highest-value next workflows with the exact invocation and one evidence-based reason each.
|
|
13
|
+
|
|
14
|
+
Route by current evidence:
|
|
15
|
+
|
|
16
|
+
- Missing or placeholder product context: lead with `/seven init`.
|
|
17
|
+
- A new feature with unresolved job, states, or architecture: `shape`.
|
|
18
|
+
- Repetition across two or more real surfaces: `extract`.
|
|
19
|
+
- No persisted critique for a rendered surface: `critique`.
|
|
20
|
+
- A recent critique with P0/P1 findings: `polish` for an agreed fix scope, or `critique` again if the implementation materially changed.
|
|
21
|
+
- Changed UI files: scope `audit`, `critique`, or `polish` to those files instead of the whole project.
|
|
22
|
+
- Excessive detector findings: use the workflow matching the root cause (`typeset`, `layout`, `colorize`, `quieter`, `harden`) rather than recommending every repair command.
|
|
23
|
+
- An existing `live.session` or a running local dev surface: `live` is available. Do not lead with it when no dev surface can run.
|
|
24
|
+
- A sound surface whose measured performance is weak: `optimize`.
|
|
25
|
+
|
|
26
|
+
Then show the remaining workflows grouped as: establish context, build/structure, evaluate, refine, validate/operate. A recommendation is a suggestion; wait for the user's choice before mutating files.
|
|
27
|
+
|
|
28
|
+
If `update.notify` is true, keep the release update separate from the workflow recommendation. Never let maintenance displace the requested product work.
|
|
@@ -4,7 +4,7 @@ Shape the UX of a feature before any code is written. This command produces a **
|
|
|
4
4
|
|
|
5
5
|
**Scope**: design planning only. Shape does not write code. It produces the thinking that makes code good.
|
|
6
6
|
|
|
7
|
-
**Output**: a design brief that can be handed off to a downstream command (`polish`, `audit`, or
|
|
7
|
+
**Output**: a design brief that can be handed off to a downstream command (`polish`, `audit`, or implementation by Claude). When a materially ambiguous visual decision remains, read [visual-probes.md](visual-probes.md); probes never authorize tokens, components, or variants outside Seven.
|
|
8
8
|
|
|
9
9
|
## Philosophy
|
|
10
10
|
|
|
@@ -18,7 +18,7 @@ Do not write code or commit design decisions during this phase. use the AskUserQ
|
|
|
18
18
|
|
|
19
19
|
- 2-3 questions per round. Stop and wait for answers.
|
|
20
20
|
- One round is the default. Add a second only if the first leaves material gaps.
|
|
21
|
-
- Use `PRODUCT.md
|
|
21
|
+
- Use `PRODUCT.md`, `.seven/project.yml`, the release lock, and the matched surface brief as anchors. Never use a consumer `DESIGN.md` as visual authority.
|
|
22
22
|
- **Assert-then-confirm**, not menu-with-escape. When `PRODUCT.md` makes one path obvious, name it and ask the user to confirm or override. Avoid four-option menus when the answer is already clear.
|
|
23
23
|
|
|
24
24
|
### Purpose and context
|
|
@@ -39,7 +39,7 @@ Do not write code or commit design decisions during this phase. use the AskUserQ
|
|
|
39
39
|
|
|
40
40
|
For Seven, register is almost always `product`. Confirm once:
|
|
41
41
|
|
|
42
|
-
- Is this an app/admin/dashboard surface (product) or a marketing surface (brand
|
|
42
|
+
- Is this an app/admin/dashboard surface (`product`) or a public marketing/storytelling surface (`brand`)?
|
|
43
43
|
- What is the surface type? Page, panel, dialog, popover, table row, empty state, navigation.
|
|
44
44
|
|
|
45
45
|
### Scope
|
|
@@ -68,7 +68,7 @@ After discovery, write a short brief (under one page) covering:
|
|
|
68
68
|
1. **Surface description** in one sentence.
|
|
69
69
|
2. **Register and scope** confirmed.
|
|
70
70
|
3. **Component reuse plan**: which `@etus/ui` components are already in the surface. Which are missing.
|
|
71
|
-
4. **Variant inventory**: for each component, which variant. If a variant is missing from
|
|
71
|
+
4. **Variant inventory**: for each component, which variant. If a variant is missing from the exact installed registry contract, flag it explicitly; do not invent or reach into a newer release.
|
|
72
72
|
5. **State matrix**: idle, loading, empty, error, success, disabled. For each state, the visual approach.
|
|
73
73
|
6. **Token plan**: which `@etus/tokens` variables compose the surface. Call out any place a token is missing and a hex would be needed; surface that as a question, do not invent.
|
|
74
74
|
7. **Copy direction**: pt-BR examples for labels, buttons, empty state, errors. Sentence case, no trailing periods, imperative leads.
|
|
@@ -82,4 +82,4 @@ After discovery, write a short brief (under one page) covering:
|
|
|
82
82
|
## Refusals
|
|
83
83
|
|
|
84
84
|
- "Just write the code, skip the brief" — Shape exists because skipping the brief produces generic output. Offer a 5-minute Quick Shape (3 questions instead of 8) as a middle ground; do not skip entirely.
|
|
85
|
-
- "Generate three visual variants" —
|
|
85
|
+
- "Generate three visual variants" — Do so only when the decision is genuinely visual and the user asks. Keep the same Seven token/component authority in every probe, label the decision being tested, and discard probes that do not answer it.
|
|
@@ -25,7 +25,7 @@ Seven runs two radius stacks. They are not interchangeable. Mixing them within t
|
|
|
25
25
|
- Avatar triggers in the topbar (round avatars).
|
|
26
26
|
- Status indicators (dots and pills).
|
|
27
27
|
|
|
28
|
-
Never pill on buttons. Buttons stay on the component scale. The detector ships a `pill-on-button` rule
|
|
28
|
+
Never pill on buttons. Buttons stay on the component scale. The detector ships a `pill-on-button` rule that catches drift.
|
|
29
29
|
|
|
30
30
|
## Spacing
|
|
31
31
|
|
|
@@ -41,7 +41,7 @@ Borders carry hierarchy in Seven, not shadows.
|
|
|
41
41
|
|
|
42
42
|
- 1 px `var(--border)` is the workhorse. Cards, inputs, dividers, table rows all use it.
|
|
43
43
|
- 2 px borders are reserved for focus and active states (4 px on focus rings).
|
|
44
|
-
- Side-stripe borders (`border-left` or `border-right` greater than 1 px as a colored accent) are banned. The detector ships a `side-stripe-border` rule
|
|
44
|
+
- Side-stripe borders (`border-left` or `border-right` greater than 1 px as a colored accent) are banned. The detector ships a `side-stripe-border` rule. Use full borders, background tints, leading icons, or restructure the element.
|
|
45
45
|
|
|
46
46
|
## Shadows
|
|
47
47
|
|
|
@@ -56,5 +56,5 @@ Card chrome uses borders, not shadows. If a card needs more weight, deepen the b
|
|
|
56
56
|
## Refusals
|
|
57
57
|
|
|
58
58
|
- "Add a soft shadow under the card" — Seven cards use borders for hierarchy. Suggest a tinted background or a 2 px accent border. If the user insists, document the deviation in the audit.
|
|
59
|
-
- "Use a 16 px radius on the button" — Surface scale on a button reads as a chip from a different design system. Recommend `md 8` or surface as a
|
|
59
|
+
- "Use a 16 px radius on the button" — Surface scale on a button reads as a chip from a different design system. Recommend `md 8` or surface as a Seven component-contract request.
|
|
60
60
|
- "Stack a card inside a card" — Nested cards are a Seven anti-pattern. Recommend a section divider, a labeled list, or a `Tabs` view instead.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Typeset — Seven typography under stress
|
|
2
|
+
|
|
3
|
+
Refine hierarchy, readability, and delivery using the installed Seven Text component roles, Inter, and JetBrains Mono. Read [typography.md](typography.md) first.
|
|
4
|
+
|
|
5
|
+
## Two-pass assessment
|
|
6
|
+
|
|
7
|
+
Keep these passes separate before synthesizing:
|
|
8
|
+
|
|
9
|
+
1. Rendered typography: identify roles, hierarchy, reading measure, density, line breaks, numeric alignment, long pt-BR copy, zoom, and fallback behavior.
|
|
10
|
+
2. Mechanical scan: run `seven check --file <target>` and inspect arbitrary/dynamic styles the detector cannot resolve.
|
|
11
|
+
|
|
12
|
+
For every claim, cite a component, selector, computed value, or screenshot state.
|
|
13
|
+
|
|
14
|
+
## Apply
|
|
15
|
+
|
|
16
|
+
- Use the fewest Text variants that make heading, body, label, metadata, and numeric roles unmistakable.
|
|
17
|
+
- Reuse declared Text variants instead of rebuilding a type ramp with utilities.
|
|
18
|
+
- Keep product body text at the Seven base role; dense captions must remain readable and cannot become body copy by volume.
|
|
19
|
+
- Keep prose near 45–75 characters per line and adjust layout before inventing a font size.
|
|
20
|
+
- Use tabular figures for tables, KPIs, timestamps, and aligned numbers.
|
|
21
|
+
- Preserve browser zoom and user font scaling. Test long words, names, values, and localization expansion.
|
|
22
|
+
- Load only used Inter/JetBrains Mono assets and weights; avoid invisible text and disruptive metric changes.
|
|
23
|
+
|
|
24
|
+
Never introduce another font family, letter spacing for generic labels, extreme negative tracking, all-caps body copy, oversized H1s, or arbitrary scale values. A missing role is a Seven contract gap.
|
|
25
|
+
|
|
26
|
+
## Verify
|
|
27
|
+
|
|
28
|
+
Confirm hierarchy without reading the words, long-content wrapping, 200% zoom, narrow containers, dark mode, and final detector output. Report each Text variant used and any unresolved contract gap.
|
|
@@ -34,7 +34,7 @@ Inter ships tabular figures via the `tnum` feature. Apply `font-feature-settings
|
|
|
34
34
|
|
|
35
35
|
## Display surfaces
|
|
36
36
|
|
|
37
|
-
Display typography (hero headings
|
|
37
|
+
Display typography (hero headings and marketing pages) follows the brand register in [brand.md](brand.md), not product chrome. Do not import display treatment into application UI.
|
|
38
38
|
|
|
39
39
|
## Refusals
|
|
40
40
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Visual probes
|
|
2
|
+
|
|
3
|
+
Use probes only when a real product decision remains visually ambiguous after context and component-contract inspection. A probe answers one named question; it is not a license for arbitrary redesign.
|
|
4
|
+
|
|
5
|
+
## Contract
|
|
6
|
+
|
|
7
|
+
- Keep the product job, information, behavior, states, content, and accessibility target constant across directions.
|
|
8
|
+
- Use the exact installed Seven components, declared variants, tokens, icon system, typography, radii, and motion language in every direction.
|
|
9
|
+
- Vary one decision family at a time: hierarchy, density, composition, disclosure, emphasis, or responsive reflow.
|
|
10
|
+
- Produce one strong default when evidence points clearly to it. Produce up to three directions only when comparison creates information.
|
|
11
|
+
- Label each direction by its tradeoff, not by generic adjectives such as "modern" or "clean".
|
|
12
|
+
- State what would falsify each direction and which user/job it benefits.
|
|
13
|
+
|
|
14
|
+
## Direction shape
|
|
15
|
+
|
|
16
|
+
For every probe record:
|
|
17
|
+
|
|
18
|
+
1. decision being tested;
|
|
19
|
+
2. hypothesis and affected user job;
|
|
20
|
+
3. composition/component changes;
|
|
21
|
+
4. Seven contracts reused;
|
|
22
|
+
5. behavior across mobile, desktop, keyboard, reduced motion, loading, empty, error, and long-content cases;
|
|
23
|
+
6. cost/risk;
|
|
24
|
+
7. verification criterion.
|
|
25
|
+
|
|
26
|
+
In Live Mode, deliver inert HTML/CSS previews only. Outside Live Mode, prefer a concise written probe or throwaway local mock; do not leave exploration code in production paths.
|
|
27
|
+
|
|
28
|
+
## Anti-patterns
|
|
29
|
+
|
|
30
|
+
- Three variants that differ only by color, radius, or decoration.
|
|
31
|
+
- A "bold" direction that introduces tokens or variants absent from Seven.
|
|
32
|
+
- Comparing different content/data while claiming to compare layout.
|
|
33
|
+
- Selecting the most visually novel direction without product evidence.
|
|
34
|
+
- Treating accepted browser DOM as source code.
|
|
35
|
+
|
|
36
|
+
Finish with one recommendation and the evidence that selects it. If no direction is defensible, return to `shape` rather than averaging them.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { spawnSync } from 'node:child_process'
|
|
5
|
+
import fs from 'node:fs'
|
|
6
|
+
import path from 'node:path'
|
|
7
|
+
import { fileURLToPath } from 'node:url'
|
|
8
|
+
|
|
9
|
+
import { argValue, loadContext } from './load-context.mjs'
|
|
10
|
+
|
|
11
|
+
const UI_EXTENSIONS = new Set(['.css', '.html', '.js', '.jsx', '.less', '.mdx', '.scss', '.ts', '.tsx'])
|
|
12
|
+
|
|
13
|
+
function gitNames(root, args) {
|
|
14
|
+
const result = spawnSync('git', args, { cwd: root, encoding: 'utf8' })
|
|
15
|
+
if (result.status !== 0) return []
|
|
16
|
+
return result.stdout.split('\n').map((item) => item.trim()).filter(Boolean)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function changedUiFiles(root) {
|
|
20
|
+
const names = new Set([
|
|
21
|
+
...gitNames(root, ['diff', '--name-only', '--diff-filter=ACMR']),
|
|
22
|
+
...gitNames(root, ['diff', '--cached', '--name-only', '--diff-filter=ACMR']),
|
|
23
|
+
...gitNames(root, ['ls-files', '--others', '--exclude-standard']),
|
|
24
|
+
])
|
|
25
|
+
return [...names].filter((name) => UI_EXTENSIONS.has(path.extname(name).toLowerCase())).sort()
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function latestReview(root) {
|
|
29
|
+
const directory = path.join(root, '.seven', 'reviews')
|
|
30
|
+
let names = []
|
|
31
|
+
try {
|
|
32
|
+
names = fs.readdirSync(directory).filter((name) => name.endsWith('.json'))
|
|
33
|
+
} catch {
|
|
34
|
+
return null
|
|
35
|
+
}
|
|
36
|
+
const candidates = names.map((name) => {
|
|
37
|
+
const filePath = path.join(directory, name)
|
|
38
|
+
try {
|
|
39
|
+
return { filePath, mtime: fs.statSync(filePath).mtimeMs, payload: JSON.parse(fs.readFileSync(filePath, 'utf8')) }
|
|
40
|
+
} catch {
|
|
41
|
+
return null
|
|
42
|
+
}
|
|
43
|
+
}).filter(Boolean).sort((left, right) => right.mtime - left.mtime)
|
|
44
|
+
if (!candidates[0]) return null
|
|
45
|
+
return {
|
|
46
|
+
path: path.relative(root, candidates[0].filePath).split(path.sep).join('/'),
|
|
47
|
+
createdAt: candidates[0].payload.createdAt || null,
|
|
48
|
+
score: candidates[0].payload.score ?? null,
|
|
49
|
+
p0: candidates[0].payload.summary?.p0 ?? 0,
|
|
50
|
+
p1: candidates[0].payload.summary?.p1 ?? 0,
|
|
51
|
+
target: candidates[0].payload.target || null,
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function scanTargets(context, changed) {
|
|
56
|
+
if (changed.length > 0) return { via: 'git-changes', targets: changed.slice(0, 40) }
|
|
57
|
+
const roots = Array.isArray(context.project?.sourceRoots) ? context.project.sourceRoots : ['src']
|
|
58
|
+
const existing = roots.filter((entry) => fs.existsSync(path.join(context.projectRoot, entry)))
|
|
59
|
+
return { via: 'source-roots', targets: existing.slice(0, 8) }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export async function collectContextSignals(start = process.cwd(), { target = start } = {}) {
|
|
63
|
+
const context = await loadContext(start, { target })
|
|
64
|
+
const changed = changedUiFiles(context.projectRoot)
|
|
65
|
+
return {
|
|
66
|
+
schemaVersion: 1,
|
|
67
|
+
projectRoot: context.projectRoot,
|
|
68
|
+
target: path.resolve(target),
|
|
69
|
+
setup: {
|
|
70
|
+
hasProduct: context.hasProduct,
|
|
71
|
+
productPlaceholder: context.productPlaceholder,
|
|
72
|
+
hasRelease: Boolean(context.release),
|
|
73
|
+
register: context.register,
|
|
74
|
+
app: context.app?.id || null,
|
|
75
|
+
surface: context.surface?.id || null,
|
|
76
|
+
},
|
|
77
|
+
git: { changedFiles: changed },
|
|
78
|
+
critique: { latest: latestReview(context.projectRoot) },
|
|
79
|
+
scan: scanTargets(context, changed),
|
|
80
|
+
live: {
|
|
81
|
+
session: fs.existsSync(path.join(context.projectRoot, '.seven', 'live', 'session.json')),
|
|
82
|
+
journal: fs.existsSync(path.join(context.projectRoot, '.seven', 'live', 'journal.ndjson')),
|
|
83
|
+
extensionPathCommand: 'seven extension path',
|
|
84
|
+
},
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export async function main(argv = process.argv) {
|
|
89
|
+
const target = argValue('--target', argv) || process.env.SEVEN_TARGET || process.cwd()
|
|
90
|
+
const signals = await collectContextSignals(target, { target })
|
|
91
|
+
process.stdout.write(`${JSON.stringify(signals, null, 2)}\n`)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (process.argv[1] && path.resolve(process.argv[1]) === path.resolve(fileURLToPath(import.meta.url))) await main()
|