feat: 初始化 SCALE OS 工程框架

- 添加 SCALE Engine 配置 (.scale/)
- 添加 OpenClaw Agent 配置 (.openclaw/)
- 添加知识文档 (AGENTS.md, TOOLS.md)
- 添加质量契约和工作流配置
- 添加 22 个工作流模板
- 添加验证脚本和门控脚本
- 添加 skills-registry 技能注册表
This commit is contained in:
2026-05-20 15:06:38 +08:00
parent 5f1c217853
commit 2f16c4762f
51 changed files with 2783 additions and 0 deletions

7
.scale/.gitignore vendored Normal file
View File

@@ -0,0 +1,7 @@
*.db
*.db-journal
events/
checkpoints/
evidence/
state/
hooks/*.sh

4
.scale/assets.json Normal file
View File

@@ -0,0 +1,4 @@
{
"version": 1,
"assets": []
}

View File

@@ -0,0 +1,6 @@
{
"version": 1,
"generatedAt": "",
"scope": "Legacy findings tracked separately. New findings and changed-file findings must still be fixed before completion.",
"findings": []
}

View File

@@ -0,0 +1,67 @@
{
"version": 1,
"mode": "warn",
"sourceDirectories": [
"src",
"app",
"packages",
"services",
"cmd",
"internal",
"pkg"
],
"ignoredDirectories": [
".git",
".scale",
"node_modules",
"dist",
"build",
"coverage",
"test-results",
"playwright-report",
"tmp",
"temp",
"docs",
"tests",
"__tests__",
"e2e"
],
"allowedConsoleDirectories": [
"src/api",
"src/cli",
"scripts"
],
"allowedConsoleFiles": [
"src/dashboard/DashboardServer.ts"
],
"maxFileLines": 500,
"logging": {
"approvedLoggers": [
"pino",
"winston",
"zap",
"zerolog",
"logrus",
"slog"
],
"sensitiveFields": [
"password",
"passwd",
"token",
"accessToken",
"refreshToken",
"secret",
"authorization",
"cookie",
"apiKey",
"credential",
"privateKey"
]
},
"architecture": {
"enforceLayering": true
},
"blockingRules": [],
"allowedFindingPatterns": [],
"baselineFindings": []
}

23
.scale/frameworks.json Normal file
View File

@@ -0,0 +1,23 @@
{
"version": 1,
"lastReviewedAt": "",
"reviewIntervalDays": 90,
"frameworks": [],
"orm": [],
"ui": {
"designSystem": "",
"componentLibrary": "",
"visualReviewRequired": true
},
"architecture": {
"layers": [
"api",
"service",
"domain",
"repository",
"infrastructure"
],
"dependencyRule": "outer layers depend inward through explicit interfaces"
},
"bannedImports": []
}

200
.scale/governance.lock.json Normal file
View File

@@ -0,0 +1,200 @@
{
"version": 1,
"scalePackage": "@hongmaple0820/scale-engine",
"scaleVersion": "0.0.0-dev",
"pack": "standard",
"packVersion": 1,
"generatedAt": "2026-05-20T06:59:28.689Z",
"files": [
{
"path": "docs/workflow/README.md",
"sha256": "95568223be7593850dd117af82c7a983bb361a19651884b7dd8a1240a4a37956",
"owned": true
},
{
"path": "docs/workflow/templates/explore.md",
"sha256": "e3845d0ecc4d85d11cbd2ac49de2a6fc3fad4debf071c31a4567c76fc44bceea",
"owned": true
},
{
"path": "docs/workflow/templates/mini-prd.md",
"sha256": "276bec99769152ed90c4ab56e789c4fd8756de4fb1794db260a70a6a5ef032b8",
"owned": true
},
{
"path": "docs/workflow/templates/skill-plan.md",
"sha256": "60f48a9d780bf0029bb7281a92d3ff9ca702e6cae1c49d9ca17fda790f04439e",
"owned": true
},
{
"path": "docs/workflow/templates/skill-evidence.md",
"sha256": "fa697a67437bae8b3372d620cfab4e64daff7a693a0603327389da362cf805d7",
"owned": true
},
{
"path": "docs/workflow/templates/runtime.md",
"sha256": "e1f4c575dec24c95e9b9f72d52d47badbd1bd0e8fb207193b671803a0c59fa9c",
"owned": true
},
{
"path": "docs/workflow/templates/reality-check.md",
"sha256": "11a9102b87b6f08b118a21edc5fcdda49f27741078e463a44a6e4dd904513d0b",
"owned": true
},
{
"path": "docs/workflow/templates/resource-cleanup.md",
"sha256": "ba2b343cbee04d3037638f3751f64cb14ad63c528529be364967bb49619cfa25",
"owned": true
},
{
"path": "docs/workflow/templates/ui-spec.md",
"sha256": "328022424df35d7a221ff18fb5c04840c74f327deabf1d49f7a7e739fe06290c",
"owned": true
},
{
"path": "docs/workflow/templates/visual-review.md",
"sha256": "7ebf7765969a7cf36b46aeb4d9f1c04f5513cefdd2e57256c1badc83722b00cc",
"owned": true
},
{
"path": "docs/workflow/templates/api-contract.md",
"sha256": "a9091cc5f6d7b8178589dcff2253afa366d188903b175dd5c69dbc6c955bace0",
"owned": true
},
{
"path": "docs/workflow/templates/docs-impact.md",
"sha256": "a4ff6c98539b71ff7f6df2cce8253b9073c6c134ee2ee9d1e1fc34b819b961a0",
"owned": true
},
{
"path": "docs/workflow/templates/resource-impact.md",
"sha256": "af37cb2d4d97cfe46243269225732dfc10180dd6eb1e58b3085abb6ee0e3cc5f",
"owned": true
},
{
"path": "docs/workflow/templates/standards-impact.md",
"sha256": "eed804359ca45b0b7d4436b305ea44f9872bccaa3c6e4fcf3dfbf0b1f422545f",
"owned": true
},
{
"path": "docs/workflow/templates/architecture-review.md",
"sha256": "819390550452c3bb65e5eff2fee44d3d5767a3f4e164fd64cdb10420fd3f40aa",
"owned": true
},
{
"path": "docs/workflow/templates/security-review.md",
"sha256": "542bb035a0e45dc954056d95652952717ec34765debe0de3649246fb6e1290a8",
"owned": true
},
{
"path": "docs/workflow/templates/db-change-plan.md",
"sha256": "9e76ec7d3efae5374373bc1ad11c94da74ff59927b3778a1fed557dba0c51458",
"owned": true
},
{
"path": "docs/workflow/templates/e2e-plan.md",
"sha256": "e77779e7f0f61610c9d1ef594a53565599d0777f2c6c12a9c6507f82b6fbfb26",
"owned": true
},
{
"path": "docs/workflow/templates/product-smoke.md",
"sha256": "5b4be8ecddc47d1b4f890bd83532ed5652a1444a0ab2d30c0c91015a46f648d4",
"owned": true
},
{
"path": "docs/workflow/templates/plan.md",
"sha256": "08100fe1bb88e801e11c13cd1ad6d26dbebe6117027b93b26c44ad3ef907ff81",
"owned": true
},
{
"path": "docs/workflow/templates/verification.md",
"sha256": "b9cbe1f287115a15b18b201e8e25e2c40a2dc3aa4b347098c21414c66ea0fb49",
"owned": true
},
{
"path": "docs/workflow/templates/review.md",
"sha256": "62e3bee211f9e4381bfb3fb7463edb78e74da708bc804c35f4acab9c5f65d010",
"owned": true
},
{
"path": "docs/workflow/templates/summary.md",
"sha256": "00c99d6236ca749e330eb3769c1c0a55082f64db58362b73944419e7ec7753cf",
"owned": true
},
{
"path": "docs/workflow/templates/github-actions-scale-preflight.yml",
"sha256": "a218c4a23251e6da42b807ebc490d363d17490abd5e8ec7bcb11377444571f33",
"owned": true
},
{
"path": "docs/workflow/templates/pre-push-scale-preflight.sh",
"sha256": "3b3a8e45ab3ac8774e54fbcbd5b44cddbf1df06a74aa671f535289b9629a3f7c",
"owned": true
},
{
"path": "docs/worklog/metrics.md",
"sha256": "66ced9a1d893b142e01d2e4aaf0e3d6509a8166d6274fbacfc4abee52874359b",
"owned": true
},
{
"path": "scripts/qa/product-smoke.ps1",
"sha256": "e5b0694cbb83dd3e722435b6133c45ea43eab576a3f013dc30e6bc5492f8d6fb",
"owned": true
},
{
"path": "scripts/qa/product-smoke.sh",
"sha256": "633ec087cc54081ca9aa52f4915274b427b0e2148cf1510a8dac56ce47a71c7e",
"owned": true
},
{
"path": ".scale/verification.json",
"sha256": "483e73923114628149c7f31a984526cb07bf60a4c237273beb68697078dc1941",
"owned": true
},
{
"path": ".scale/skills.json",
"sha256": "56228729c0fbb89ee31fee286b47a877002fc0972ea45db7f3153b7ec213d24e",
"owned": true
},
{
"path": ".scale/tools.json",
"sha256": "f204f9ef206a7b0f25b2064661bd0d5ff25980b36c0f9bda0bb973af206074ad",
"owned": true
},
{
"path": ".scale/resource-policy.json",
"sha256": "67d1e469d6cef5d68508ac3cc8bb5c9fd1eea33826f9c3f2fdf8e19cff10f6b9",
"owned": true
},
{
"path": ".scale/assets.json",
"sha256": "a8174f5941573d1acd5d5df5dee4bca235701e21c29685694d143512d3247acf",
"owned": true
},
{
"path": ".scale/output-policy.json",
"sha256": "c51b6f0b4ecc570f0b8a7738a1a3b0013cc76fb99dfb121c8ee9f51e7fa7c3bb",
"owned": true
},
{
"path": ".scale/product-smoke.json",
"sha256": "9b07dd0d9dd0d3a1689c497cd1f79b1f72b8324d4059b5172c1b503a9d82585f",
"owned": true
},
{
"path": ".scale/engineering-standards.json",
"sha256": "dd8a8bc0f0594f31ba9fd71120e73d4c78db84b7603aab50bdaf875401d78ad9",
"owned": true
},
{
"path": ".scale/engineering-standards-baseline.json",
"sha256": "14b1ebdb505038b5eba18297b4e76ae1185cd60c98a6f131001633498bed2cf7",
"owned": true
},
{
"path": ".scale/frameworks.json",
"sha256": "78158a49e9c1331e0222e6efa1bb3744c5fe2bdb043da66a5238855f433756cc",
"owned": true
}
]
}

72
.scale/output-policy.json Normal file
View File

@@ -0,0 +1,72 @@
{
"version": 1,
"sourceFormat": "markdown",
"artifactDirectory": "artifacts",
"manifestFile": "artifact-manifest.json",
"defaultTheme": "auto",
"defaultGitPolicy": "review",
"safety": {
"allowRemoteScripts": false,
"allowRemoteStyles": false,
"detectSecrets": true
},
"templates": {
"plan-comparison": {
"label": "Plan Comparison",
"sources": [
"mini-prd.md",
"explore.md",
"plan.md"
],
"description": "Compare candidate approaches, tradeoffs, open questions, and decision criteria."
},
"implementation-plan": {
"label": "Implementation Plan",
"sources": [
"plan.md",
"verification.md"
],
"description": "Convert the implementation plan and verification strategy into a scannable delivery surface."
},
"code-review": {
"label": "Code Review",
"sources": [
"review.md",
"security-review.md",
"standards-impact.md"
],
"description": "Summarize review findings, severity, evidence, and residual risks."
},
"status-report": {
"label": "Status Report",
"sources": [
"summary.md",
"verification.md",
"resource-impact.md",
"standards-impact.md"
],
"description": "Show current task status, proof, blockers, resource state, and follow-ups."
},
"incident-report": {
"label": "Incident Report",
"sources": [
"explore.md",
"plan.md",
"verification.md",
"review.md"
],
"description": "Explain incident context, diagnosis, fix, validation, and prevention work."
},
"release-report": {
"label": "Release Report",
"sources": [
"summary.md",
"verification.md",
"review.md",
"resource-impact.md",
"standards-impact.md"
],
"description": "Package final release evidence, risk state, unverified items, and sign-off readiness."
}
}
}

33
.scale/product-smoke.json Normal file
View File

@@ -0,0 +1,33 @@
{
"version": 1,
"gate": "warn",
"requiredForLevels": [
"M",
"L",
"CRITICAL"
],
"emptyProbeBehavior": "block",
"setupGuide": [
"Set probes[].enabled=true only after replacing the example command with a real product path.",
"Use a command that crosses the real boundary: client/UI -> gateway/router -> service -> persistence or observable result.",
"Run: scale preflight --profile productSmoke --json",
"Run: scale runtime final-check --level M --json"
],
"runtimeEvidence": {
"requiredKind": "command",
"requiredStatus": "passed",
"requireArtifacts": true
},
"probes": [
{
"id": "example-business-flow",
"enabled": false,
"description": "Replace with a real user/product path such as UI -> gateway -> service -> database/storage.",
"command": "curl -fsS http://127.0.0.1:3000/health",
"expected": {
"exitCode": 0,
"evidenceArtifact": ".agent/logs/product-smoke.json"
}
}
]
}

View File

@@ -0,0 +1,70 @@
{
"version": "1.0",
"project": "eskin-model-player",
"description": "E-Skin 传感器数据可视化工具质量契约",
"gates": {
"pre_commit": {
"enabled": true,
"checks": [
{
"name": "type_check",
"command": "cargo check",
"required": true,
"description": "类型检查"
},
{
"name": "lint",
"command": "cargo clippy -- -D warnings",
"required": true,
"description": "Clippy lint 检查"
},
{
"name": "test",
"command": "cargo test",
"required": true,
"description": "单元测试"
}
]
},
"pre_push": {
"enabled": true,
"checks": [
{
"name": "build_release",
"command": "cargo build --release",
"required": true,
"description": "Release 构建验证"
},
{
"name": "full_test",
"command": "cargo test --all",
"required": true,
"description": "完整测试套件"
}
]
},
"code_review": {
"enabled": true,
"checks": [
{
"name": "no_unwrap",
"pattern": "\\.unwrap\\(\\)",
"severity": "warning",
"description": "避免裸 unwrap(),使用 expect() 或 ? 运算符"
},
{
"name": "no_todo",
"pattern": "todo!\\(\\)|unimplemented!\\(\\)",
"severity": "warning",
"description": "生产代码不应包含 todo!/unimplemented!"
}
]
}
},
"quality_metrics": {
"max_complexity": 15,
"min_test_coverage": 0,
"max_file_lines": 500,
"max_function_lines": 80
}
}

View File

@@ -0,0 +1,39 @@
{
"version": 1,
"maxGitFileSizeBytes": 5242880,
"ignoredDirectories": [
".git",
"node_modules",
"dist",
"build",
"vendor",
".next",
".turbo"
],
"retainedRuntimeDirectories": [
".scale/tmp",
".scale/evidence",
".scale/reports",
".scale/resource-reports",
"tmp",
"temp",
"test-results",
"playwright-report",
"coverage"
],
"owners": {
"docs": "engineering",
"docs/standards": "engineering",
"docs/workflow": "engineering",
"docs/decisions": "architecture",
"docs/modules": "module-owner",
".planning": "engineering",
".scale": "engineering"
},
"modules": {
"example": {
"path": "src/example",
"owner": "team-or-owner"
}
}
}

View File

@@ -0,0 +1,82 @@
{
"version": "1.0",
"project": "eskin-model-player",
"skills": [
{
"name": "graphify",
"category": "knowledge",
"description": "代码知识图谱",
"install": "pip install graphifyy && graphify install",
"riskLevel": "LOW",
"status": "optional"
},
{
"name": "systematic-debugging",
"category": "debugging",
"description": "系统化调试方法论",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "freeze-guard",
"category": "safety",
"description": "防止代码冻结/死锁",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "tdd",
"category": "testing",
"description": "测试驱动开发",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "verification",
"category": "quality",
"description": "验证检查",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "review",
"category": "quality",
"description": "代码审查",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "ce-compound",
"category": "workflow",
"description": "复合编辑",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "ship",
"category": "workflow",
"description": "发布交付",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "scale-methodology",
"category": "methodology",
"description": "SCALE 求是方法论",
"riskLevel": "LOW",
"status": "active"
},
{
"name": "codegraph",
"category": "knowledge",
"description": "代码图谱",
"riskLevel": "LOW",
"status": "active"
}
],
"riskFlags": {
"HIGH": "需要人工审查",
"MEDIUM": "自动审查",
"LOW": "自动信任"
}
}

630
.scale/skills.json Normal file
View File

@@ -0,0 +1,630 @@
{
"version": 1,
"policy": {
"mode": "warn",
"enforceLevels": [
"M",
"L",
"CRITICAL"
],
"requireSkillPlan": true
},
"domains": {
"ui": {
"detect": {
"files": [
"src/**/*.tsx",
"src/**/*.jsx",
"app/**/*.tsx",
"pages/**/*.tsx",
"components/**/*.tsx",
"**/*.css",
"**/*.scss"
],
"keywords": [
"ui",
"ux",
"frontend",
"component",
"page",
"layout",
"responsive",
"visual",
"界面",
"页面",
"交互",
"视觉",
"前端"
]
},
"requiredSkills": [
"frontend-design",
"ui-ux-pro-max"
],
"recommendedSkills": [
"awesome-design-md",
"webapp-testing",
"agent-browser",
"mcp-chrome-devtools",
"browser-testing-with-devtools",
"design-review"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"mini-prd.md",
"ui-spec.md",
"visual-review.md"
],
"requiredVerification": [
"design-system",
"screenshot",
"responsive-check",
"browser-run",
"visual-review"
]
},
"webResearch": {
"detect": {
"files": [
"docs/research/**",
"docs/**/research.md",
"**/research.md"
],
"keywords": [
"web research",
"search online",
"online",
"latest",
"source citation",
"source citations",
"logged-in",
"login",
"dynamic web page",
"authenticated page",
"inspect page",
"web-access",
"network",
"web fetch"
]
},
"requiredSkills": [
"web-access"
],
"recommendedSkills": [
"agent-browser",
"mcp-chrome-devtools",
"source-driven-development",
"browser-use"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"verification.md"
],
"requiredVerification": [
"source-citation",
"browser-evidence",
"network-console-check"
]
},
"browserAutomation": {
"detect": {
"files": [
"tests/e2e/**",
"e2e/**",
"playwright.config.*",
"**/*.spec.ts",
"**/*.e2e.ts"
],
"keywords": [
"browser automation",
"browser interaction",
"browser behavior",
"browser",
"playwright",
"agent-browser",
"chrome devtools",
"cdp",
"screenshot",
"console log",
"network request",
"e2e",
"end-to-end"
]
},
"recommendedSkills": [
"webapp-testing",
"agent-browser",
"web-access",
"mcp-chrome-devtools",
"playwright",
"playwright-interactive"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"e2e-plan.md",
"verification.md"
],
"requiredVerification": [
"browser-run",
"screenshot",
"console-log",
"network-console-check"
]
},
"e2e": {
"detect": {
"files": [
"tests/e2e/**",
"e2e/**",
"playwright.config.*"
],
"keywords": [
"e2e",
"browser",
"playwright",
"end-to-end",
"端到端",
"浏览器"
]
},
"recommendedSkills": [
"webapp-testing",
"agent-browser",
"web-access",
"mcp-chrome-devtools",
"playwright",
"playwright-interactive"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"e2e-plan.md"
],
"requiredVerification": [
"browser-run",
"screenshot",
"console-log"
]
},
"desktopAutomation": {
"detect": {
"files": [
"tests/desktop/**",
"desktop/**",
"e2e/desktop/**"
],
"keywords": [
"desktop automation",
"desktop app",
"computer use",
"cua",
"gui automation",
"operate desktop",
"windows desktop",
"wps",
"wechat",
"weixin",
"office app"
]
},
"requiredSkills": [
"turix-cua"
],
"recommendedSkills": [
"agent-browser",
"web-access",
"computer-use",
"opencli"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"verification.md"
],
"requiredVerification": [
"desktop-screenshot",
"operator-safety",
"side-effect-boundary"
],
"blockLevels": [
"CRITICAL"
]
},
"externalCli": {
"detect": {
"files": [
"scripts/**",
".github/workflows/**"
],
"keywords": [
"external cli",
"agent cli",
"codex",
"codex cli",
"claude code",
"gemini cli",
"opencode",
"aider",
"cross-agent",
"subagent",
"wps cli",
"wechat automation"
]
},
"recommendedSkills": [
"codex-cli",
"gemini-cli",
"opencode-cli",
"git-workflow-and-versioning",
"code-reviewer"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"verification.md"
],
"requiredVerification": [
"cli-version-check",
"command-output",
"dry-run-or-safe-mode",
"side-effect-boundary"
]
},
"api": {
"detect": {
"files": [
"**/api/**",
"**/routes/**",
"**/controller/**",
"**/*.api",
"**/*.proto"
],
"keywords": [
"api",
"endpoint",
"route",
"handler",
"接口",
"路由"
]
},
"recommendedSkills": [
"tdd-guide",
"code-review"
],
"requiredArtifacts": [
"skill-plan.md",
"mini-prd.md",
"api-contract.md"
],
"requiredVerification": [
"contract-check"
]
},
"db": {
"detect": {
"files": [
"**/migration/**",
"**/migrations/**",
"**/*.sql",
"**/schema.*",
"**/model/**"
],
"keywords": [
"database",
"db",
"migration",
"schema",
"sql",
"数据表",
"数据库",
"迁移"
]
},
"requiredSkills": [
"security-review"
],
"recommendedSkills": [
"systematic-debugging"
],
"requiredArtifacts": [
"skill-plan.md",
"db-change-plan.md",
"security-review.md"
],
"requiredVerification": [
"rollback-plan",
"migration-test"
]
},
"security": {
"detect": {
"files": [
"**/auth/**",
"**/permission/**",
"**/security/**",
"**/middleware/**"
],
"keywords": [
"auth",
"permission",
"tenant",
"token",
"credential",
"secret",
"rbac",
"鉴权",
"权限",
"租户",
"密钥"
]
},
"requiredSkills": [
"security-review"
],
"recommendedSkills": [
"code-review"
],
"requiredArtifacts": [
"skill-plan.md",
"security-review.md"
],
"requiredVerification": [
"threat-model",
"rollback-plan"
],
"blockLevels": [
"CRITICAL"
]
},
"docs": {
"detect": {
"files": [
"docs/**",
"**/*.md"
],
"keywords": [
"docs",
"documentation",
"document",
"readme",
"文档"
]
},
"recommendedSkills": [
"update-docs",
"workflow-guide"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"docs-impact.md"
]
},
"resourceGovernance": {
"detect": {
"files": [
".scale/resource-policy.json",
".scale/assets.json",
"docs/modules/**",
"docs/decisions/**",
"docs/worklog/tasks/**",
"test-results/**",
"playwright-report/**",
"coverage/**",
"tmp/**",
"scripts/tmp/**",
"**/*.png",
"**/*.jpg",
"**/*.jpeg",
"**/*.webp",
"**/*.gif",
"**/*.mp4",
"**/*.webm",
"**/*.mov",
"**/*.wav",
"**/*.mp3"
],
"keywords": [
"asset",
"resource",
"artifact retention",
"lifecycle",
"temporary file",
"e2e report",
"screenshot",
"video",
"documentation drift",
"resource governance"
]
},
"recommendedSkills": [
"documentation-and-adrs",
"git-workflow-and-versioning",
"ai-slop-cleaner"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"docs-impact.md",
"resource-impact.md"
],
"requiredVerification": [
"asset-scan",
"asset-doctor"
]
},
"engineeringStandards": {
"detect": {
"files": [
".scale/engineering-standards.json",
".scale/frameworks.json",
"docs/standards/**",
"src/**",
"app/**",
"packages/**",
"services/**",
"internal/**",
"pkg/**"
],
"keywords": [
"coding standard",
"engineering standard",
"logging",
"redaction",
"desensitization",
"orm",
"framework convention",
"architecture boundary",
"design pattern",
"test rigor",
"sql injection",
"xss",
"脱敏",
"日志",
"架构规范",
"编码规范",
"框架规范",
"联调",
"发版"
]
},
"recommendedSkills": [
"code-review-and-quality",
"security-and-hardening",
"documentation-and-adrs"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"standards-impact.md",
"architecture-review.md",
"security-review.md"
],
"requiredVerification": [
"standards-scan",
"standards-doctor"
],
"blockLevels": [
"L",
"CRITICAL"
]
},
"review": {
"detect": {
"files": [
".github/PULL_REQUEST_TEMPLATE.md",
".github/pull_request_template.md"
],
"keywords": [
"review",
"code review",
"pull request",
"pr",
"merge request",
"changes reviewed",
"审查",
"评审"
]
},
"requiredSkills": [
"code-reviewer"
],
"recommendedSkills": [
"pr-creator"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"review.md"
],
"requiredVerification": [
"review-evidence"
]
},
"release": {
"detect": {
"files": [
"CHANGELOG.md",
"package.json",
".github/workflows/**"
],
"keywords": [
"release",
"ship",
"publish",
"deploy",
"pull request",
"pr",
"发版",
"发布",
"部署"
]
},
"requiredSkills": [
"code-reviewer"
],
"recommendedSkills": [
"pr-creator",
"fix",
"verification",
"code-review"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"review.md",
"summary.md"
],
"requiredVerification": [
"preflight"
]
},
"skillDiscovery": {
"detect": {
"keywords": [
"skill",
"capability",
"missing capability",
"install skill",
"find skill"
]
},
"recommendedSkills": [
"find-skills"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md"
]
},
"fullstackPrototype": {
"detect": {
"keywords": [
"fullstack",
"full-stack",
"mvp",
"prototype",
"next.js",
"react api",
"node api"
]
},
"recommendedSkills": [
"fullstack-developer"
],
"requiredArtifacts": [
"skill-plan.md",
"skill-evidence.md",
"mini-prd.md",
"api-contract.md"
],
"requiredVerification": [
"preflight"
]
}
}
}

118
.scale/tools.json Normal file
View File

@@ -0,0 +1,118 @@
{
"version": 1,
"mode": "evidence-required",
"tools": {
"web-access": {
"enabled": true,
"requiredFor": [
"webResearch"
],
"recommendedFor": [
"browserAutomation"
],
"destructiveActions": "block",
"evidenceRequired": true
},
"frontend-design": {
"enabled": true,
"requiredFor": [
"ui"
],
"destructiveActions": "block",
"evidenceRequired": true
},
"ui-ux-pro-max": {
"enabled": true,
"requiredFor": [
"ui"
],
"destructiveActions": "block",
"evidenceRequired": true
},
"agent-browser": {
"enabled": true,
"requiredFor": [
"browserAutomation"
],
"recommendedFor": [
"ui",
"e2e"
],
"allowedDomains": [
"localhost",
"127.0.0.1"
],
"destructiveActions": "confirm",
"command": "agent-browser",
"evidenceRequired": true
},
"playwright": {
"enabled": true,
"requiredFor": [
"e2e"
],
"recommendedFor": [
"browserAutomation",
"ui"
],
"destructiveActions": "confirm",
"command": "npx playwright",
"evidenceRequired": true
},
"mcp-chrome-devtools": {
"enabled": true,
"requiredFor": [
"browserAutomation"
],
"recommendedFor": [
"ui",
"e2e"
],
"destructiveActions": "confirm",
"mcpToolName": "chrome-devtools",
"evidenceRequired": true
},
"desktop-cua": {
"enabled": false,
"requiredFor": [
"desktopAutomation"
],
"destructiveActions": "block",
"command": "cua",
"evidenceRequired": true
},
"codex-cli": {
"enabled": false,
"requiredFor": [],
"recommendedFor": [
"externalCli",
"review"
],
"destructiveActions": "block",
"command": "codex",
"evidenceRequired": true
},
"gemini-cli": {
"enabled": false,
"requiredFor": [],
"recommendedFor": [
"externalCli",
"review"
],
"destructiveActions": "block",
"command": "gemini",
"evidenceRequired": true
},
"opencode-cli": {
"enabled": false,
"requiredFor": [],
"recommendedFor": [
"externalCli",
"review"
],
"destructiveActions": "block",
"command": "opencode",
"evidenceRequired": true
}
}
}

35
.scale/verification.json Normal file
View File

@@ -0,0 +1,35 @@
{
"version": 1,
"defaultProfile": "default",
"profiles": {
"default": {
"commands": {},
"services": []
},
"productSmoke": {
"commands": {
"smoke": "powershell -ExecutionPolicy Bypass -File scripts/qa/product-smoke.ps1"
},
"services": []
}
},
"services": [],
"exclude": [
"node_modules",
"dist",
"tmp",
"vendor"
],
"policy": {
"mode": "standard",
"optionalToolsWarnOnly": true,
"artifactGate": "warn",
"artifactGateLevels": [
"M",
"L",
"CRITICAL"
],
"engineeringStandardsGate": "block",
"productSmokeGate": "warn"
}
}

51
.scale/workflow.json Normal file
View File

@@ -0,0 +1,51 @@
{
"version": "1.0",
"project": "eskin-model-player",
"workflow": {
"phases": [
{
"name": "explore",
"description": "理解需求和现有代码",
"required": true,
"artifacts": ["docs/workflow/templates/explore.md"]
},
{
"name": "plan",
"description": "制定实现方案",
"required": true,
"artifacts": ["docs/workflow/templates/plan.md"]
},
{
"name": "implement",
"description": "编码实现",
"required": true,
"gates": ["type_check", "lint"]
},
{
"name": "test",
"description": "测试验证",
"required": true,
"gates": ["test"]
},
{
"name": "review",
"description": "代码审查",
"required": true,
"artifacts": ["docs/workflow/templates/review.md"]
},
{
"name": "ship",
"description": "提交发布",
"required": true,
"gates": ["build_release", "full_test"]
}
]
},
"skills_routing": {
"debug": "systematic-debugging",
"test": "tdd",
"review": "review",
"ship": "ship",
"graph": "graphify"
}
}