mirror of
https://github.com/garrytan/gstack.git
synced 2026-05-01 11:17:50 +02:00
2300067267
* feat: UX behavioral foundations — Krug's usability principles as shared design infrastructure Add UX_PRINCIPLES resolver distilling Steve Krug's "Don't Make Me Think" into actionable guidance for AI agents. Injected into all 4 design skills as a shared behavioral foundation complementing the existing visual checklist (WHAT to check) and cognitive patterns (HOW designers see) with HOW USERS ACTUALLY BEHAVE. Methodology rewire: 6 Krug usability tests woven into existing design-review phases — Trunk Test, 3-Second Scan, Page Area Test, Happy Talk Detection with word count metric, Mindless Choice Audit, Goodwill Reservoir tracking with visual dashboard. First-person narration mode for design-review output with anti-slop guardrail. Hard rules: 4 Krug always/never rules in DESIGN_HARD_RULES (placeholder-as-label, floating headings, visited link distinction, minimum type size). Krug, Redish, Jarrett added to plan-design-review references. Token ceiling: gen-skill-docs.ts warns if any SKILL.md exceeds 100KB (~25K tokens). Documented in CLAUDE.md. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: $B ux-audit command + snapshot --heatmap flag New browse meta-command: ux-audit extracts page structure (site ID, navigation, headings, interactive elements, text blocks) as structured JSON for agent-side UX behavioral analysis. Pure data extraction — the agent applies the 6 usability tests and makes judgment calls. Element caps: 50 headings, 100 links, 200 interactive, 50 text blocks. New snapshot flag: -H/--heatmap accepts a JSON color map mapping ref IDs to colors (green/yellow/red/blue/orange/gray). Extends existing snapshot -a annotation system with per-ref colors instead of hardcoded red. Color whitelist validation prevents CSS injection. Composable — any skill can use it. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update project documentation for v0.17.0.0 ARCHITECTURE.md: added {{UX_PRINCIPLES}} resolver to placeholder table. VERSION: bumped to 0.17.0.0 for UX behavioral foundations release. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: bump version and changelog (v0.17.0.0) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix: adversarial review fixes for ux-audit and heatmap Security: - Remove live form value extraction from ux-audit (leaked input field values) - Add ux-audit to PAGE_CONTENT_COMMANDS (untrusted content wrapping) Correctness: - Scope youAreHere selector to nav containers (was matching animation classes) - Validate heatmap JSON is a plain object (string/array/null produced garbage) - Use textContent instead of innerText for word count (avoids layout computation) - Remove dead url variable and unused LINK_CAP constant Found by Codex + Claude adversarial review. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
67 lines
3.6 KiB
TypeScript
67 lines
3.6 KiB
TypeScript
/**
|
|
* RESOLVERS record — maps {{PLACEHOLDER}} names to generator functions.
|
|
* Each resolver takes a TemplateContext and returns the replacement string.
|
|
*/
|
|
|
|
import type { TemplateContext, ResolverFn } from './types';
|
|
|
|
// Domain modules
|
|
import { generatePreamble } from './preamble';
|
|
import { generateTestFailureTriage } from './preamble';
|
|
import { generateCommandReference, generateSnapshotFlags, generateBrowseSetup } from './browse';
|
|
import { generateDesignMethodology, generateDesignHardRules, generateDesignOutsideVoices, generateDesignReviewLite, generateDesignSketch, generateDesignSetup, generateDesignMockup, generateDesignShotgunLoop, generateUXPrinciples } from './design';
|
|
import { generateTestBootstrap, generateTestCoverageAuditPlan, generateTestCoverageAuditShip, generateTestCoverageAuditReview } from './testing';
|
|
import { generateReviewDashboard, generatePlanFileReviewReport, generateSpecReviewLoop, generateBenefitsFrom, generateCodexSecondOpinion, generateAdversarialStep, generateCodexPlanReview, generatePlanCompletionAuditShip, generatePlanCompletionAuditReview, generatePlanVerificationExec, generateScopeDrift, generateCrossReviewDedup } from './review';
|
|
import { generateSlugEval, generateSlugSetup, generateBaseBranchDetect, generateDeployBootstrap, generateQAMethodology, generateCoAuthorTrailer, generateChangelogWorkflow } from './utility';
|
|
import { generateLearningsSearch, generateLearningsLog } from './learnings';
|
|
import { generateConfidenceCalibration } from './confidence';
|
|
import { generateInvokeSkill } from './composition';
|
|
import { generateReviewArmy } from './review-army';
|
|
import { generateDxFramework } from './dx';
|
|
|
|
export const RESOLVERS: Record<string, ResolverFn> = {
|
|
SLUG_EVAL: generateSlugEval,
|
|
SLUG_SETUP: generateSlugSetup,
|
|
COMMAND_REFERENCE: generateCommandReference,
|
|
SNAPSHOT_FLAGS: generateSnapshotFlags,
|
|
PREAMBLE: generatePreamble,
|
|
BROWSE_SETUP: generateBrowseSetup,
|
|
BASE_BRANCH_DETECT: generateBaseBranchDetect,
|
|
QA_METHODOLOGY: generateQAMethodology,
|
|
DESIGN_METHODOLOGY: generateDesignMethodology,
|
|
DESIGN_HARD_RULES: generateDesignHardRules,
|
|
UX_PRINCIPLES: generateUXPrinciples,
|
|
DESIGN_OUTSIDE_VOICES: generateDesignOutsideVoices,
|
|
DESIGN_REVIEW_LITE: generateDesignReviewLite,
|
|
REVIEW_DASHBOARD: generateReviewDashboard,
|
|
PLAN_FILE_REVIEW_REPORT: generatePlanFileReviewReport,
|
|
TEST_BOOTSTRAP: generateTestBootstrap,
|
|
TEST_COVERAGE_AUDIT_PLAN: generateTestCoverageAuditPlan,
|
|
TEST_COVERAGE_AUDIT_SHIP: generateTestCoverageAuditShip,
|
|
TEST_COVERAGE_AUDIT_REVIEW: generateTestCoverageAuditReview,
|
|
TEST_FAILURE_TRIAGE: generateTestFailureTriage,
|
|
SPEC_REVIEW_LOOP: generateSpecReviewLoop,
|
|
DESIGN_SKETCH: generateDesignSketch,
|
|
DESIGN_SETUP: generateDesignSetup,
|
|
DESIGN_MOCKUP: generateDesignMockup,
|
|
DESIGN_SHOTGUN_LOOP: generateDesignShotgunLoop,
|
|
BENEFITS_FROM: generateBenefitsFrom,
|
|
CODEX_SECOND_OPINION: generateCodexSecondOpinion,
|
|
ADVERSARIAL_STEP: generateAdversarialStep,
|
|
SCOPE_DRIFT: generateScopeDrift,
|
|
DEPLOY_BOOTSTRAP: generateDeployBootstrap,
|
|
CODEX_PLAN_REVIEW: generateCodexPlanReview,
|
|
PLAN_COMPLETION_AUDIT_SHIP: generatePlanCompletionAuditShip,
|
|
PLAN_COMPLETION_AUDIT_REVIEW: generatePlanCompletionAuditReview,
|
|
PLAN_VERIFICATION_EXEC: generatePlanVerificationExec,
|
|
CO_AUTHOR_TRAILER: generateCoAuthorTrailer,
|
|
LEARNINGS_SEARCH: generateLearningsSearch,
|
|
LEARNINGS_LOG: generateLearningsLog,
|
|
CONFIDENCE_CALIBRATION: generateConfidenceCalibration,
|
|
INVOKE_SKILL: generateInvokeSkill,
|
|
CHANGELOG_WORKFLOW: generateChangelogWorkflow,
|
|
REVIEW_ARMY: generateReviewArmy,
|
|
CROSS_REVIEW_DEDUP: generateCrossReviewDedup,
|
|
DX_FRAMEWORK: generateDxFramework,
|
|
};
|