@mison/ling 1.0.0
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/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agents/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agents/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agents/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agents/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agents/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agents/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agents/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agents/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agents/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agents/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agents/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agents/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agents/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agents/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agents/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agents/ARCHITECTURE.md +285 -0
- package/.agents/agents/backend-specialist.md +268 -0
- package/.agents/agents/code-archaeologist.md +106 -0
- package/.agents/agents/database-architect.md +225 -0
- package/.agents/agents/debugger.md +225 -0
- package/.agents/agents/devops-engineer.md +242 -0
- package/.agents/agents/documentation-writer.md +104 -0
- package/.agents/agents/explorer-agent.md +73 -0
- package/.agents/agents/frontend-specialist.md +618 -0
- package/.agents/agents/game-developer.md +162 -0
- package/.agents/agents/mobile-developer.md +382 -0
- package/.agents/agents/orchestrator.md +436 -0
- package/.agents/agents/penetration-tester.md +188 -0
- package/.agents/agents/performance-optimizer.md +187 -0
- package/.agents/agents/product-manager.md +112 -0
- package/.agents/agents/product-owner.md +95 -0
- package/.agents/agents/project-planner.md +405 -0
- package/.agents/agents/qa-automation-engineer.md +103 -0
- package/.agents/agents/security-auditor.md +170 -0
- package/.agents/agents/seo-specialist.md +111 -0
- package/.agents/agents/test-engineer.md +158 -0
- package/.agents/mcp_config.json +22 -0
- package/.agents/rules/GEMINI.md +273 -0
- package/.agents/scripts/auto_preview.py +148 -0
- package/.agents/scripts/checklist.py +217 -0
- package/.agents/scripts/session_manager.py +120 -0
- package/.agents/scripts/verify_all.py +327 -0
- package/.agents/skills/api-patterns/SKILL.md +84 -0
- package/.agents/skills/api-patterns/api-style.md +42 -0
- package/.agents/skills/api-patterns/auth.md +24 -0
- package/.agents/skills/api-patterns/documentation.md +26 -0
- package/.agents/skills/api-patterns/graphql.md +41 -0
- package/.agents/skills/api-patterns/rate-limiting.md +31 -0
- package/.agents/skills/api-patterns/response.md +37 -0
- package/.agents/skills/api-patterns/rest.md +40 -0
- package/.agents/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agents/skills/api-patterns/security-testing.md +122 -0
- package/.agents/skills/api-patterns/trpc.md +41 -0
- package/.agents/skills/api-patterns/versioning.md +22 -0
- package/.agents/skills/app-builder/SKILL.md +75 -0
- package/.agents/skills/app-builder/agent-coordination.md +74 -0
- package/.agents/skills/app-builder/feature-building.md +53 -0
- package/.agents/skills/app-builder/project-detection.md +34 -0
- package/.agents/skills/app-builder/scaffolding.md +118 -0
- package/.agents/skills/app-builder/tech-stack.md +40 -0
- package/.agents/skills/app-builder/templates/SKILL.md +39 -0
- package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agents/skills/architecture/SKILL.md +57 -0
- package/.agents/skills/architecture/context-discovery.md +43 -0
- package/.agents/skills/architecture/examples.md +94 -0
- package/.agents/skills/architecture/pattern-selection.md +68 -0
- package/.agents/skills/architecture/patterns-reference.md +50 -0
- package/.agents/skills/architecture/trade-off-analysis.md +77 -0
- package/.agents/skills/bash-linux/SKILL.md +201 -0
- package/.agents/skills/behavioral-modes/SKILL.md +264 -0
- package/.agents/skills/brainstorming/SKILL.md +164 -0
- package/.agents/skills/brainstorming/dynamic-questioning.md +359 -0
- package/.agents/skills/clean-code/SKILL.md +200 -0
- package/.agents/skills/code-review-checklist/SKILL.md +125 -0
- package/.agents/skills/database-design/SKILL.md +54 -0
- package/.agents/skills/database-design/database-selection.md +43 -0
- package/.agents/skills/database-design/indexing.md +39 -0
- package/.agents/skills/database-design/migrations.md +50 -0
- package/.agents/skills/database-design/optimization.md +36 -0
- package/.agents/skills/database-design/orm-selection.md +30 -0
- package/.agents/skills/database-design/schema-design.md +56 -0
- package/.agents/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agents/skills/deployment-procedures/SKILL.md +241 -0
- package/.agents/skills/doc.md +177 -0
- package/.agents/skills/documentation-templates/SKILL.md +194 -0
- package/.agents/skills/frontend-design/SKILL.md +418 -0
- package/.agents/skills/frontend-design/animation-guide.md +331 -0
- package/.agents/skills/frontend-design/color-system.md +307 -0
- package/.agents/skills/frontend-design/decision-trees.md +418 -0
- package/.agents/skills/frontend-design/motion-graphics.md +306 -0
- package/.agents/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agents/skills/frontend-design/scripts/ux_audit.py +727 -0
- package/.agents/skills/frontend-design/typography-system.md +345 -0
- package/.agents/skills/frontend-design/ux-psychology.md +1118 -0
- package/.agents/skills/frontend-design/visual-effects.md +383 -0
- package/.agents/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agents/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agents/skills/game-development/SKILL.md +167 -0
- package/.agents/skills/game-development/game-art/SKILL.md +185 -0
- package/.agents/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agents/skills/game-development/game-design/SKILL.md +129 -0
- package/.agents/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agents/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agents/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agents/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agents/skills/game-development/web-games/SKILL.md +150 -0
- package/.agents/skills/geo-fundamentals/SKILL.md +155 -0
- package/.agents/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agents/skills/i18n-localization/SKILL.md +154 -0
- package/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agents/skills/intelligent-routing/SKILL.md +335 -0
- package/.agents/skills/lint-and-validate/SKILL.md +44 -0
- package/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agents/skills/mcp-builder/SKILL.md +176 -0
- package/.agents/skills/mobile-design/SKILL.md +394 -0
- package/.agents/skills/mobile-design/decision-trees.md +516 -0
- package/.agents/skills/mobile-design/mobile-backend.md +491 -0
- package/.agents/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agents/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agents/skills/mobile-design/mobile-design-thinking.md +355 -0
- package/.agents/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agents/skills/mobile-design/mobile-performance.md +767 -0
- package/.agents/skills/mobile-design/mobile-testing.md +356 -0
- package/.agents/skills/mobile-design/mobile-typography.md +432 -0
- package/.agents/skills/mobile-design/platform-android.md +666 -0
- package/.agents/skills/mobile-design/platform-ios.md +561 -0
- package/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agents/skills/mobile-design/touch-psychology.md +537 -0
- package/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
- package/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
- package/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
- package/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
- package/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
- package/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
- package/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
- package/.agents/skills/nextjs-react-expert/SKILL.md +286 -0
- package/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agents/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agents/skills/parallel-agents/SKILL.md +193 -0
- package/.agents/skills/performance-profiling/SKILL.md +149 -0
- package/.agents/skills/performance-profiling/scripts/lighthouse_audit.py +120 -0
- package/.agents/skills/plan-writing/SKILL.md +152 -0
- package/.agents/skills/powershell-windows/SKILL.md +166 -0
- package/.agents/skills/python-patterns/SKILL.md +441 -0
- package/.agents/skills/red-team-tactics/SKILL.md +203 -0
- package/.agents/skills/refactoring-patterns/SKILL.md +43 -0
- package/.agents/skills/rust-pro/SKILL.md +190 -0
- package/.agents/skills/seo-fundamentals/SKILL.md +135 -0
- package/.agents/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
- package/.agents/skills/server-management/SKILL.md +161 -0
- package/.agents/skills/systematic-debugging/SKILL.md +114 -0
- package/.agents/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agents/skills/tdd-workflow/SKILL.md +149 -0
- package/.agents/skills/testing-patterns/SKILL.md +178 -0
- package/.agents/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agents/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agents/skills/vulnerability-scanner/checklists.md +131 -0
- package/.agents/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-310.pyc +0 -0
- package/.agents/skills/vulnerability-scanner/scripts/security_scan.py +524 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agents/skills/webapp-testing/SKILL.md +187 -0
- package/.agents/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agents/workflows/brainstorm.md +113 -0
- package/.agents/workflows/create.md +59 -0
- package/.agents/workflows/debug.md +103 -0
- package/.agents/workflows/deploy.md +176 -0
- package/.agents/workflows/enhance.md +63 -0
- package/.agents/workflows/orchestrate.md +242 -0
- package/.agents/workflows/plan.md +89 -0
- package/.agents/workflows/preview.md +80 -0
- package/.agents/workflows/restore-localize-compat.md +525 -0
- package/.agents/workflows/status.md +86 -0
- package/.agents/workflows/test.md +144 -0
- package/.agents/workflows/ui-ux-pro-max.md +295 -0
- package/.spec/profiles/codex/AGENTS.spec.md +7 -0
- package/.spec/profiles/codex/ling.spec.rules.md +4 -0
- package/.spec/profiles/gemini/GEMINI.spec.md +5 -0
- package/.spec/references/README.md +36 -0
- package/.spec/references/cse-quickstart.md +96 -0
- package/.spec/references/gda-framework.md +394 -0
- package/.spec/references/harness-engineering-digest.md +93 -0
- package/.spec/skills/cybernetic-systems-engineering/SKILL.md +792 -0
- package/.spec/skills/cybernetic-systems-engineering/agents/openai.yaml +5 -0
- package/.spec/skills/cybernetic-systems-engineering/assets/quickstart.md +96 -0
- package/.spec/skills/cybernetic-systems-engineering/references/README.md +36 -0
- package/.spec/skills/cybernetic-systems-engineering/references/gda-framework.md +394 -0
- package/.spec/skills/cybernetic-systems-engineering/scripts/issues.csv +20 -0
- package/.spec/skills/harness-engineering/SKILL.md +100 -0
- package/.spec/skills/harness-engineering/agents/openai.yaml +4 -0
- package/.spec/skills/harness-engineering/references/harness-engineering-digest.md +93 -0
- package/.spec/templates/driver-prompt.md +7 -0
- package/.spec/templates/handoff.md +9 -0
- package/.spec/templates/issues.template.csv +2 -0
- package/.spec/templates/phase-acceptance.md +9 -0
- package/.spec/templates/review-report.md +9 -0
- package/AGENT_FLOW.md +609 -0
- package/CHANGELOG.md +43 -0
- package/LICENSE +21 -0
- package/README.md +359 -0
- package/bin/adapters/base.js +63 -0
- package/bin/adapters/codex.js +421 -0
- package/bin/adapters/gemini.js +157 -0
- package/bin/ag-kit.js +2266 -0
- package/bin/core/builder.js +80 -0
- package/bin/core/generator.js +59 -0
- package/bin/core/resource-loader.js +64 -0
- package/bin/core/transformer.js +208 -0
- package/bin/interactive.js +65 -0
- package/bin/ling.js +3 -0
- package/bin/utils/atomic-writer.js +97 -0
- package/bin/utils/git-helper.js +68 -0
- package/bin/utils/managed-block.js +65 -0
- package/bin/utils/manifest.js +244 -0
- package/bin/utils.js +89 -0
- package/docs/PLAN.md +54 -0
- package/docs/TECH.md +191 -0
- package/package.json +56 -0
- package/scripts/ci-verify.js +110 -0
- package/scripts/clean.js +123 -0
- package/scripts/health-check.js +143 -0
- package/scripts/health-check.sh +6 -0
- package/scripts/postinstall-check.js +112 -0
- package/scripts/run-tests.js +49 -0
- package/tests/atomic-writer.test.js +47 -0
- package/tests/clean-script.test.js +77 -0
- package/tests/cli-smoke.test.js +479 -0
- package/tests/codex-adapter.test.js +132 -0
- package/tests/doctor.test.js +94 -0
- package/tests/gemini-adapter.test.js +30 -0
- package/tests/generator.test.js +48 -0
- package/tests/git-helper.test.js +53 -0
- package/tests/global-sync.test.js +133 -0
- package/tests/health-check-script.test.js +34 -0
- package/tests/managed-block.test.js +41 -0
- package/tests/manifest.test.js +97 -0
- package/tests/package-tarball.test.js +33 -0
- package/tests/phase-c.test.js +107 -0
- package/tests/spec-profile.test.js +86 -0
- package/tests/standards-compliance.test.js +303 -0
- package/tests/transformer.test.js +74 -0
- package/tests/versioning.test.js +51 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
API Validator - Checks API endpoints for best practices.
|
|
4
|
+
Validates OpenAPI specs, response formats, and common issues.
|
|
5
|
+
"""
|
|
6
|
+
import sys
|
|
7
|
+
import json
|
|
8
|
+
import re
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
# Fix Windows console encoding for Unicode output
|
|
12
|
+
try:
|
|
13
|
+
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
|
|
14
|
+
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
|
|
15
|
+
except AttributeError:
|
|
16
|
+
pass # Python < 3.7
|
|
17
|
+
|
|
18
|
+
def find_api_files(project_path: Path) -> list:
|
|
19
|
+
"""Find API-related files."""
|
|
20
|
+
patterns = [
|
|
21
|
+
"**/*api*.ts", "**/*api*.js", "**/*api*.py",
|
|
22
|
+
"**/routes/*.ts", "**/routes/*.js", "**/routes/*.py",
|
|
23
|
+
"**/controllers/*.ts", "**/controllers/*.js",
|
|
24
|
+
"**/endpoints/*.ts", "**/endpoints/*.py",
|
|
25
|
+
"**/*.openapi.json", "**/*.openapi.yaml",
|
|
26
|
+
"**/swagger.json", "**/swagger.yaml",
|
|
27
|
+
"**/openapi.json", "**/openapi.yaml"
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
files = []
|
|
31
|
+
for pattern in patterns:
|
|
32
|
+
files.extend(project_path.glob(pattern))
|
|
33
|
+
|
|
34
|
+
# Exclude node_modules, etc.
|
|
35
|
+
return [f for f in files if not any(x in str(f) for x in ['node_modules', '.git', 'dist', 'build', '__pycache__'])]
|
|
36
|
+
|
|
37
|
+
def check_openapi_spec(file_path: Path) -> dict:
|
|
38
|
+
"""Check OpenAPI/Swagger specification."""
|
|
39
|
+
issues = []
|
|
40
|
+
passed = []
|
|
41
|
+
|
|
42
|
+
try:
|
|
43
|
+
content = file_path.read_text(encoding='utf-8')
|
|
44
|
+
|
|
45
|
+
if file_path.suffix == '.json':
|
|
46
|
+
spec = json.loads(content)
|
|
47
|
+
else:
|
|
48
|
+
# Basic YAML check
|
|
49
|
+
if 'openapi:' in content or 'swagger:' in content:
|
|
50
|
+
passed.append("[OK] OpenAPI/Swagger version defined")
|
|
51
|
+
else:
|
|
52
|
+
issues.append("[X] No OpenAPI version found")
|
|
53
|
+
|
|
54
|
+
if 'paths:' in content:
|
|
55
|
+
passed.append("[OK] Paths section exists")
|
|
56
|
+
else:
|
|
57
|
+
issues.append("[X] No paths defined")
|
|
58
|
+
|
|
59
|
+
if 'components:' in content or 'definitions:' in content:
|
|
60
|
+
passed.append("[OK] Schema components defined")
|
|
61
|
+
|
|
62
|
+
return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'openapi'}
|
|
63
|
+
|
|
64
|
+
# JSON OpenAPI checks
|
|
65
|
+
if 'openapi' in spec or 'swagger' in spec:
|
|
66
|
+
passed.append("[OK] OpenAPI version defined")
|
|
67
|
+
|
|
68
|
+
if 'info' in spec:
|
|
69
|
+
if 'title' in spec['info']:
|
|
70
|
+
passed.append("[OK] API title defined")
|
|
71
|
+
if 'version' in spec['info']:
|
|
72
|
+
passed.append("[OK] API version defined")
|
|
73
|
+
if 'description' not in spec['info']:
|
|
74
|
+
issues.append("[!] API description missing")
|
|
75
|
+
|
|
76
|
+
if 'paths' in spec:
|
|
77
|
+
path_count = len(spec['paths'])
|
|
78
|
+
passed.append(f"[OK] {path_count} endpoints defined")
|
|
79
|
+
|
|
80
|
+
# Check each path
|
|
81
|
+
for path, methods in spec['paths'].items():
|
|
82
|
+
for method, details in methods.items():
|
|
83
|
+
if method in ['get', 'post', 'put', 'patch', 'delete']:
|
|
84
|
+
if 'responses' not in details:
|
|
85
|
+
issues.append(f"[X] {method.upper()} {path}: No responses defined")
|
|
86
|
+
if 'summary' not in details and 'description' not in details:
|
|
87
|
+
issues.append(f"[!] {method.upper()} {path}: No description")
|
|
88
|
+
|
|
89
|
+
except Exception as e:
|
|
90
|
+
issues.append(f"[X] Parse error: {e}")
|
|
91
|
+
|
|
92
|
+
return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'openapi'}
|
|
93
|
+
|
|
94
|
+
def check_api_code(file_path: Path) -> dict:
|
|
95
|
+
"""Check API code for common issues."""
|
|
96
|
+
issues = []
|
|
97
|
+
passed = []
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
content = file_path.read_text(encoding='utf-8')
|
|
101
|
+
|
|
102
|
+
# Check for error handling
|
|
103
|
+
error_patterns = [
|
|
104
|
+
r'try\s*{', r'try:', r'\.catch\(',
|
|
105
|
+
r'except\s+', r'catch\s*\('
|
|
106
|
+
]
|
|
107
|
+
has_error_handling = any(re.search(p, content) for p in error_patterns)
|
|
108
|
+
if has_error_handling:
|
|
109
|
+
passed.append("[OK] Error handling present")
|
|
110
|
+
else:
|
|
111
|
+
issues.append("[X] No error handling found")
|
|
112
|
+
|
|
113
|
+
# Check for status codes
|
|
114
|
+
status_patterns = [
|
|
115
|
+
r'status\s*\(\s*\d{3}\s*\)', r'statusCode\s*[=:]\s*\d{3}',
|
|
116
|
+
r'HttpStatus\.', r'status_code\s*=\s*\d{3}',
|
|
117
|
+
r'\.status\(\d{3}\)', r'res\.status\('
|
|
118
|
+
]
|
|
119
|
+
has_status = any(re.search(p, content) for p in status_patterns)
|
|
120
|
+
if has_status:
|
|
121
|
+
passed.append("[OK] HTTP status codes used")
|
|
122
|
+
else:
|
|
123
|
+
issues.append("[!] No explicit HTTP status codes")
|
|
124
|
+
|
|
125
|
+
# Check for validation
|
|
126
|
+
validation_patterns = [
|
|
127
|
+
r'validate', r'schema', r'zod', r'joi', r'yup',
|
|
128
|
+
r'pydantic', r'@Body\(', r'@Query\('
|
|
129
|
+
]
|
|
130
|
+
has_validation = any(re.search(p, content, re.I) for p in validation_patterns)
|
|
131
|
+
if has_validation:
|
|
132
|
+
passed.append("[OK] Input validation present")
|
|
133
|
+
else:
|
|
134
|
+
issues.append("[!] No input validation detected")
|
|
135
|
+
|
|
136
|
+
# Check for auth middleware
|
|
137
|
+
auth_patterns = [
|
|
138
|
+
r'auth', r'jwt', r'bearer', r'token',
|
|
139
|
+
r'middleware', r'guard', r'@Authenticated'
|
|
140
|
+
]
|
|
141
|
+
has_auth = any(re.search(p, content, re.I) for p in auth_patterns)
|
|
142
|
+
if has_auth:
|
|
143
|
+
passed.append("[OK] Authentication/authorization detected")
|
|
144
|
+
|
|
145
|
+
# Check for rate limiting
|
|
146
|
+
rate_patterns = [r'rateLimit', r'throttle', r'rate.?limit']
|
|
147
|
+
has_rate = any(re.search(p, content, re.I) for p in rate_patterns)
|
|
148
|
+
if has_rate:
|
|
149
|
+
passed.append("[OK] Rate limiting present")
|
|
150
|
+
|
|
151
|
+
# Check for logging
|
|
152
|
+
log_patterns = [r'console\.log', r'logger\.', r'logging\.', r'log\.']
|
|
153
|
+
has_logging = any(re.search(p, content) for p in log_patterns)
|
|
154
|
+
if has_logging:
|
|
155
|
+
passed.append("[OK] Logging present")
|
|
156
|
+
|
|
157
|
+
except Exception as e:
|
|
158
|
+
issues.append(f"[X] Read error: {e}")
|
|
159
|
+
|
|
160
|
+
return {'file': str(file_path), 'passed': passed, 'issues': issues, 'type': 'code'}
|
|
161
|
+
|
|
162
|
+
def main():
|
|
163
|
+
target = sys.argv[1] if len(sys.argv) > 1 else "."
|
|
164
|
+
project_path = Path(target)
|
|
165
|
+
|
|
166
|
+
print("\n" + "=" * 60)
|
|
167
|
+
print(" API VALIDATOR - Endpoint Best Practices Check")
|
|
168
|
+
print("=" * 60 + "\n")
|
|
169
|
+
|
|
170
|
+
api_files = find_api_files(project_path)
|
|
171
|
+
|
|
172
|
+
if not api_files:
|
|
173
|
+
print("[!] No API files found.")
|
|
174
|
+
print(" Looking for: routes/, controllers/, api/, openapi.json/yaml")
|
|
175
|
+
sys.exit(0)
|
|
176
|
+
|
|
177
|
+
results = []
|
|
178
|
+
for file_path in api_files[:15]: # Limit
|
|
179
|
+
if 'openapi' in file_path.name.lower() or 'swagger' in file_path.name.lower():
|
|
180
|
+
result = check_openapi_spec(file_path)
|
|
181
|
+
else:
|
|
182
|
+
result = check_api_code(file_path)
|
|
183
|
+
results.append(result)
|
|
184
|
+
|
|
185
|
+
# Print results
|
|
186
|
+
total_issues = 0
|
|
187
|
+
total_passed = 0
|
|
188
|
+
|
|
189
|
+
for result in results:
|
|
190
|
+
print(f"\n[FILE] {result['file']} [{result['type']}]")
|
|
191
|
+
for item in result['passed']:
|
|
192
|
+
print(f" {item}")
|
|
193
|
+
total_passed += 1
|
|
194
|
+
for item in result['issues']:
|
|
195
|
+
print(f" {item}")
|
|
196
|
+
if item.startswith("[X]"):
|
|
197
|
+
total_issues += 1
|
|
198
|
+
|
|
199
|
+
print("\n" + "=" * 60)
|
|
200
|
+
print(f"[RESULTS] {total_passed} passed, {total_issues} critical issues")
|
|
201
|
+
print("=" * 60)
|
|
202
|
+
|
|
203
|
+
if total_issues == 0:
|
|
204
|
+
print("[OK] API validation passed")
|
|
205
|
+
sys.exit(0)
|
|
206
|
+
else:
|
|
207
|
+
print("[X] Fix critical issues before deployment")
|
|
208
|
+
sys.exit(1)
|
|
209
|
+
|
|
210
|
+
if __name__ == "__main__":
|
|
211
|
+
main()
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# API 安全测试
|
|
2
|
+
|
|
3
|
+
> API 安全测试原则。OWASP API Top 10、认证与授权测试。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## OWASP API Top 10(安全前十)
|
|
8
|
+
|
|
9
|
+
| 漏洞 | 测试重点 |
|
|
10
|
+
|---------------|------------|
|
|
11
|
+
| **API1: BOLA** | 访问其他用户资源 |
|
|
12
|
+
| **API2: Broken Auth** | JWT、会话、凭证 |
|
|
13
|
+
| **API3: Property Auth** | 批量赋值、数据暴露 |
|
|
14
|
+
| **API4: Resource Consumption** | 速率限制、DoS |
|
|
15
|
+
| **API5: Function Auth** | 管理端点、角色绕过 |
|
|
16
|
+
| **API6: Business Flow** | 逻辑滥用、自动化 |
|
|
17
|
+
| **API7: SSRF** | 内网访问 |
|
|
18
|
+
| **API8: Misconfiguration** | 调试端点、CORS |
|
|
19
|
+
| **API9: Inventory** | 影子 API、旧版本 |
|
|
20
|
+
| **API10: Unsafe Consumption** | 第三方 API 信任 |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 认证测试
|
|
25
|
+
|
|
26
|
+
### JWT 测试
|
|
27
|
+
|
|
28
|
+
| 检查项 | 测试内容 |
|
|
29
|
+
|-------|--------------|
|
|
30
|
+
| 算法 | None、算法混淆 |
|
|
31
|
+
| 密钥 | 弱密钥、暴力破解 |
|
|
32
|
+
| 声明 | 过期、签发者、受众 |
|
|
33
|
+
| 签名 | 篡改、密钥注入 |
|
|
34
|
+
|
|
35
|
+
### 会话测试
|
|
36
|
+
|
|
37
|
+
| 检查项 | 测试内容 |
|
|
38
|
+
|-------|--------------|
|
|
39
|
+
| 生成 | 可预测性 |
|
|
40
|
+
| 存储 | 客户端侧安全 |
|
|
41
|
+
| 过期 | 超时强制 |
|
|
42
|
+
| 失效 | 注销有效性 |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 授权测试
|
|
47
|
+
|
|
48
|
+
| 测试类型 | 方法 |
|
|
49
|
+
|-----------|----------|
|
|
50
|
+
| **水平** | 访问同级用户数据 |
|
|
51
|
+
| **垂直** | 访问更高权限功能 |
|
|
52
|
+
| **上下文** | 访问超出允许范围 |
|
|
53
|
+
|
|
54
|
+
### BOLA/IDOR 测试
|
|
55
|
+
|
|
56
|
+
1. 识别请求中的资源 ID
|
|
57
|
+
2. 以用户 A 会话捕获请求
|
|
58
|
+
3. 以用户 B 会话重放请求
|
|
59
|
+
4. 检查是否存在未授权访问
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 输入验证测试
|
|
64
|
+
|
|
65
|
+
| 注入类型 | 测试重点 |
|
|
66
|
+
|----------------|------------|
|
|
67
|
+
| SQL | 查询篡改 |
|
|
68
|
+
| NoSQL | 文档查询 |
|
|
69
|
+
| 命令 | 系统命令 |
|
|
70
|
+
| LDAP | 目录查询 |
|
|
71
|
+
|
|
72
|
+
**方法:** 测试所有参数,尝试类型强制,测试边界,检查错误信息。
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 速率限制测试
|
|
77
|
+
|
|
78
|
+
| 方面 | 检查 |
|
|
79
|
+
|--------|-------|
|
|
80
|
+
| 存在性 | 是否有限制 |
|
|
81
|
+
| 绕过 | 请求头(Header)、IP 轮换 |
|
|
82
|
+
| 范围 | 每用户、每 IP、全局 |
|
|
83
|
+
|
|
84
|
+
**绕过手法:** X-Forwarded-For、不同 HTTP 方法、大小写变体、API 版本。
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## GraphQL 安全
|
|
89
|
+
|
|
90
|
+
| 测试 | 重点 |
|
|
91
|
+
|------|-------|
|
|
92
|
+
| 内省 | Schema(模式)泄露 |
|
|
93
|
+
| 批量 | 查询型 DoS |
|
|
94
|
+
| 嵌套 | 深度型 DoS |
|
|
95
|
+
| 授权 | 字段级访问 |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 安全测试检查清单
|
|
100
|
+
|
|
101
|
+
**认证:**
|
|
102
|
+
- [ ] 测试绕过
|
|
103
|
+
- [ ] 检查凭证强度
|
|
104
|
+
- [ ] 验证令牌安全
|
|
105
|
+
|
|
106
|
+
**授权:**
|
|
107
|
+
- [ ] 测试 BOLA/IDOR
|
|
108
|
+
- [ ] 检查权限提升
|
|
109
|
+
- [ ] 验证功能访问
|
|
110
|
+
|
|
111
|
+
**输入:**
|
|
112
|
+
- [ ] 测试所有参数
|
|
113
|
+
- [ ] 检查注入
|
|
114
|
+
|
|
115
|
+
**配置:**
|
|
116
|
+
- [ ] 检查 CORS
|
|
117
|
+
- [ ] 验证请求头(Header)
|
|
118
|
+
- [ ] 测试错误处理
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
> **记住:** API 是现代应用的骨干,像攻击者一样测试它们。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# tRPC 原则
|
|
2
|
+
|
|
3
|
+
> 为 TypeScript monorepos(TS 单仓)提供的端到端类型安全(type safety)。
|
|
4
|
+
|
|
5
|
+
## 何时使用
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
[OK] 完美契合:
|
|
9
|
+
+-- 前后端均为 TypeScript
|
|
10
|
+
+-- monorepo(单仓)结构
|
|
11
|
+
+-- 内部工具
|
|
12
|
+
+-- 快速迭代开发
|
|
13
|
+
+-- 类型安全(type safety)至关重要
|
|
14
|
+
|
|
15
|
+
[FAIL] 不契合:
|
|
16
|
+
+-- 非 TypeScript 客户端
|
|
17
|
+
+-- 公共 API 服务
|
|
18
|
+
+-- 需要遵循 REST 惯例
|
|
19
|
+
+-- 多语言后端环境
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 核心优势
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
为什么要用 tRPC:
|
|
26
|
+
+-- 零 Schema(模式)维护成本
|
|
27
|
+
+-- 端到端类型推断
|
|
28
|
+
+-- 跨技术栈的 IDE(集成开发环境)自动补全
|
|
29
|
+
+-- API 变更即时反映在前端
|
|
30
|
+
+-- 无需代码生成步骤
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 集成模式
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
常见配置:
|
|
37
|
+
+-- Next.js + tRPC(最常见)
|
|
38
|
+
+-- monorepo(单仓)共享类型定义
|
|
39
|
+
+-- Remix + tRPC
|
|
40
|
+
+-- 任意 TS(TypeScript)前端 + 后端
|
|
41
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# 版本控制策略
|
|
2
|
+
|
|
3
|
+
> 从第一天起就规划 API 的演进。
|
|
4
|
+
|
|
5
|
+
## 决策因素
|
|
6
|
+
|
|
7
|
+
| 策略 | 实现方式 | 权衡 |
|
|
8
|
+
| :--- | :------- | :---------------- |
|
|
9
|
+
| **URI(路径)** | /v1/users | 清晰,易于缓存 |
|
|
10
|
+
| **Header(请求头)** | Accept-Version: 1 | URL 更整洁,但版本发现较难 |
|
|
11
|
+
| **Query(查询参数)** | ?version=1 | 易于添加,但显得凌乱 |
|
|
12
|
+
| **无(None)** | 小心演进 | 适合内部使用,对公共 API 风险高 |
|
|
13
|
+
|
|
14
|
+
## 版本哲学
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
考量:
|
|
18
|
+
+-- 公共 API? -> 在 URI 中包含版本
|
|
19
|
+
+-- 仅内部使用? -> 可能不需要版本控制
|
|
20
|
+
+-- GraphQL? -> 通常无版本(演进 Schema(模式))
|
|
21
|
+
+-- tRPC? -> 类型系统强制兼容性
|
|
22
|
+
```
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: app-builder
|
|
3
|
+
description: App Builder(应用构建编排器)主编排器。根据自然语言请求创建全栈应用,确定项目类型、选择技术栈并协调智能体。
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# App Builder - 应用构建编排器
|
|
8
|
+
|
|
9
|
+
> 分析用户请求,确定技术栈,规划结构,并协调智能体执行。
|
|
10
|
+
|
|
11
|
+
## 选择性阅读规则
|
|
12
|
+
|
|
13
|
+
**只阅读与当前请求相关的文件!** 先查看内容地图,再读取所需文档。
|
|
14
|
+
|
|
15
|
+
| File(文件) | Description(描述) | When to Read(阅读时机) |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| `project-detection.md` | 关键词矩阵、项目类型检测 | 开始新项目 |
|
|
18
|
+
| `tech-stack.md` | 2026 默认技术栈及替代方案 | 选择技术时 |
|
|
19
|
+
| `agent-coordination.md` | 智能体流水线、执行顺序 | 协调多智能体协作时 |
|
|
20
|
+
| `scaffolding.md` | 目录结构、核心文件 | 创建项目结构时 |
|
|
21
|
+
| `feature-building.md` | 功能分析、错误处理 | 在现有项目中添加功能时 |
|
|
22
|
+
| `templates/SKILL.md` | **Project templates(项目模板)** | 为新项目搭建脚手架时 |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 模板(13)
|
|
27
|
+
|
|
28
|
+
用于新项目快速脚手架搭建。**只读取匹配模板!**
|
|
29
|
+
|
|
30
|
+
| Template(模板) | Tech Stack(技术栈) | When to Use(适用场景) |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| [nextjs-fullstack](templates/nextjs-fullstack/TEMPLATE.md) | Next.js + Prisma | Full-stack(全栈)Web 应用 |
|
|
33
|
+
| [nextjs-saas](templates/nextjs-saas/TEMPLATE.md) | Next.js + Stripe | SaaS(软件即服务)产品 |
|
|
34
|
+
| [nextjs-static](templates/nextjs-static/TEMPLATE.md) | Next.js + Framer | Landing page(落地页) |
|
|
35
|
+
| [nuxt-app](templates/nuxt-app/TEMPLATE.md) | Nuxt 3 + Pinia | Vue(前端框架)全栈应用 |
|
|
36
|
+
| [express-api](templates/express-api/TEMPLATE.md) | Express + JWT | REST API(接口服务) |
|
|
37
|
+
| [python-fastapi](templates/python-fastapi/TEMPLATE.md) | FastAPI | Python API(Python 接口) |
|
|
38
|
+
| [react-native-app](templates/react-native-app/TEMPLATE.md) | Expo + Zustand | Mobile app(移动端应用) |
|
|
39
|
+
| [flutter-app](templates/flutter-app/TEMPLATE.md) | Flutter + Riverpod | Cross-platform(跨平台)移动端 |
|
|
40
|
+
| [electron-desktop](templates/electron-desktop/TEMPLATE.md) | Electron + React | Desktop app(桌面端应用) |
|
|
41
|
+
| [chrome-extension](templates/chrome-extension/TEMPLATE.md) | Chrome MV3 | Browser extension(浏览器扩展) |
|
|
42
|
+
| [cli-tool](templates/cli-tool/TEMPLATE.md) | Node.js + Commander | CLI(命令行)应用 |
|
|
43
|
+
| [monorepo-turborepo](templates/monorepo-turborepo/TEMPLATE.md) | Turborepo + pnpm | Monorepo(单仓多包) |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 相关智能体
|
|
48
|
+
|
|
49
|
+
| Agent(智能体) | 角色 |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| `project-planner` | 任务拆解、依赖图构建 |
|
|
52
|
+
| `frontend-specialist` | UI(用户界面)组件、页面 |
|
|
53
|
+
| `backend-specialist` | API(接口)、业务逻辑 |
|
|
54
|
+
| `database-architect` | 数据结构(Schema)、迁移 |
|
|
55
|
+
| `devops-engineer` | 部署、预览 |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 使用示例
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
用户:“做一个带照片分享和点赞功能的 Instagram 克隆”
|
|
63
|
+
|
|
64
|
+
App Builder(应用构建编排器)过程:
|
|
65
|
+
1. 项目类型:Social Media App(社交媒体应用)
|
|
66
|
+
2. 技术栈:Next.js + Prisma + Cloudinary + Clerk
|
|
67
|
+
3. 创建计划:
|
|
68
|
+
+- Database schema(数据库结构):users, posts, likes, follows
|
|
69
|
+
+- API routes(API 路由):12 个 endpoints(端点)
|
|
70
|
+
+- Pages(页面):feed, profile, upload
|
|
71
|
+
+- Components(组件):PostCard, Feed, LikeButton
|
|
72
|
+
4. 协调智能体
|
|
73
|
+
5. 汇报进度
|
|
74
|
+
6. 启动预览
|
|
75
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Agent Coordination(智能体协同)
|
|
2
|
+
|
|
3
|
+
> App Builder(应用构建编排器)如何编排各领域专家 Agent。
|
|
4
|
+
|
|
5
|
+
## Agent Pipeline(智能体流水线)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
+-------------------------------------------------------------+
|
|
9
|
+
| APP BUILDER(编排器) |
|
|
10
|
+
+-------------------------------------------------------------+
|
|
11
|
+
|
|
|
12
|
+
v
|
|
13
|
+
+-------------------------------------------------------------+
|
|
14
|
+
| PROJECT PLANNER(项目规划) |
|
|
15
|
+
| - 任务拆解 |
|
|
16
|
+
| - 依赖图 |
|
|
17
|
+
| - 文件结构规划 |
|
|
18
|
+
| - 在项目根目录创建 {task-slug}.md(MANDATORY) |
|
|
19
|
+
+-------------------------------------------------------------+
|
|
20
|
+
|
|
|
21
|
+
v
|
|
22
|
+
+-------------------------------------------------------------+
|
|
23
|
+
| CHECKPOINT: PLAN VERIFICATION(计划验证) |
|
|
24
|
+
| [CRITICAL] VERIFY(验证):项目根目录是否存在 {task-slug}.md? |
|
|
25
|
+
| [CRITICAL] 若否 -> 停止 -> 先创建计划文件 |
|
|
26
|
+
| [CRITICAL] 若是 -> 继续执行专家 Agent |
|
|
27
|
+
+-------------------------------------------------------------+
|
|
28
|
+
|
|
|
29
|
+
+-------------------+-------------------+
|
|
30
|
+
v v v
|
|
31
|
+
+-----------------+ +-----------------+ +-----------------+
|
|
32
|
+
| DATABASE | | BACKEND | | FRONTEND |
|
|
33
|
+
| ARCHITECT | | SPECIALIST | | SPECIALIST |
|
|
34
|
+
| | | | | |
|
|
35
|
+
| - Schema design | | - API routes | | - Components |
|
|
36
|
+
| (模式设计) | | (接口路由) | | (组件) |
|
|
37
|
+
| - Migrations | | - Controllers | | - Pages |
|
|
38
|
+
| (迁移) | | (控制器) | | (页面) |
|
|
39
|
+
| - Seed data | | - Middleware | | - Styling |
|
|
40
|
+
| (种子数据) | | (中间件) | | (样式) |
|
|
41
|
+
+-----------------+ +-----------------+ +-----------------+
|
|
42
|
+
| | |
|
|
43
|
+
+-------------------+-------------------+
|
|
44
|
+
v
|
|
45
|
+
+-------------------------------------------------------------+
|
|
46
|
+
| PARALLEL PHASE(并行阶段,可选) |
|
|
47
|
+
| - Security Auditor(安全审计) -> 漏洞检查 |
|
|
48
|
+
| - Test Engineer(测试工程) -> 单元测试 |
|
|
49
|
+
| - Performance Optimizer(性能优化) -> 包体分析 |
|
|
50
|
+
+-------------------------------------------------------------+
|
|
51
|
+
|
|
|
52
|
+
v
|
|
53
|
+
+-------------------------------------------------------------+
|
|
54
|
+
| DEVOPS ENGINEER |
|
|
55
|
+
| - 环境设置 |
|
|
56
|
+
| - 预览部署 |
|
|
57
|
+
| - 健康检查 |
|
|
58
|
+
+-------------------------------------------------------------+
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Execution Order(执行顺序)
|
|
62
|
+
|
|
63
|
+
| Phase(阶段) | Agent(s)(智能体) | Parallel?(是否并行) | Prerequisite(前置条件) | CHECKPOINT(检查点) |
|
|
64
|
+
| --- | --- | --- | --- | --- |
|
|
65
|
+
| 0 | Socratic Gate(苏格拉底之门) | [FAIL] | - | [OK] Ask 3 questions(先问 3 个问题) |
|
|
66
|
+
| 1 | Project Planner(项目规划) | [FAIL] | Questions answered(问题已回答) | [OK] **`{task-slug}.md` created(已创建)** |
|
|
67
|
+
| 1.5 | **PLAN VERIFICATION(计划验证)** | [FAIL] | `{task-slug}.md` exists(已存在) | [OK] **File exists in root(根目录存在)** |
|
|
68
|
+
| 2 | Database Architect(数据库架构师) | [FAIL] | Plan ready(计划就绪) | Schema defined(模式已定义) |
|
|
69
|
+
| 3 | Backend Specialist(后端专家) | [FAIL] | Schema ready(模式就绪) | API routes created(路由已创建) |
|
|
70
|
+
| 4 | Frontend Specialist(前端专家) | [OK] | API ready (partial)(接口部分就绪) | UI components ready(组件就绪) |
|
|
71
|
+
| 5 | Security Auditor(安全审计员), Test Engineer(测试工程师) | [OK] | Code ready(代码就绪) | Tests & audit pass(测试与审计通过) |
|
|
72
|
+
| 6 | DevOps Engineer(运维工程师) | [FAIL] | All code ready(代码就绪) | Deployment ready(部署就绪) |
|
|
73
|
+
|
|
74
|
+
> [CRITICAL] **CRITICAL(关键):** Phase 1.5 is MANDATORY。没有 `{task-slug}.md` 验证,任何专家 Agent 不得进行后续操作。
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Feature Building(功能构建)
|
|
2
|
+
|
|
3
|
+
> 如何分析并实现新功能。
|
|
4
|
+
|
|
5
|
+
## Feature Analysis(功能分析)
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
Request(请求): “增加支付系统”
|
|
9
|
+
|
|
10
|
+
Analysis(分析):
|
|
11
|
+
+-- 所需变更:
|
|
12
|
+
| +-- 数据库: orders, payments 表
|
|
13
|
+
| +-- 后端: /api/checkout, /api/webhooks/stripe 路由
|
|
14
|
+
| +-- 前端: CheckoutForm, PaymentSuccess 组件
|
|
15
|
+
| +-- 配置: Stripe API(应用程序接口)密钥
|
|
16
|
+
|
|
|
17
|
+
+-- Dependencies(依赖):
|
|
18
|
+
| +-- stripe package(stripe 包)
|
|
19
|
+
| +-- 现有的用户认证系统
|
|
20
|
+
|
|
|
21
|
+
+-- Estimated Time(预计耗时): 15-20 分钟
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Iterative Enhancement Process(迭代增强流程)
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
1. 分析现有项目
|
|
28
|
+
2. 创建变更计划
|
|
29
|
+
3. 向用户展示计划
|
|
30
|
+
4. 获得批准
|
|
31
|
+
5. 应用变更
|
|
32
|
+
6. 测试
|
|
33
|
+
7. 显示预览
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Error Handling(错误处理)
|
|
37
|
+
|
|
38
|
+
| Error Type(错误类型) | Solution Strategy(处理策略) |
|
|
39
|
+
| --- | --- |
|
|
40
|
+
| TypeScript Error(类型错误) | 修复类型,添加缺失导入 |
|
|
41
|
+
| Missing Dependency(缺失依赖) | 运行 npm install |
|
|
42
|
+
| Port Conflict(端口冲突) | 建议替代端口 |
|
|
43
|
+
| Database Error(数据库错误) | 检查迁移,验证连接 |
|
|
44
|
+
|
|
45
|
+
## Recovery Strategy(恢复策略)
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
1. 检测错误
|
|
49
|
+
2. 尝试自动修复
|
|
50
|
+
3. 如果失败,向用户报告
|
|
51
|
+
4. 建议替代方案
|
|
52
|
+
5. 必要时回滚
|
|
53
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Project Type Detection(项目类型检测)
|
|
2
|
+
|
|
3
|
+
> 分析用户请求,确定项目类型与模板。
|
|
4
|
+
|
|
5
|
+
## Keyword Matrix(关键词矩阵)
|
|
6
|
+
|
|
7
|
+
| Keywords(关键词) | Project Type(项目类型) | Template(模板) |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| blog, post, article | Blog(博客) | astro-static |
|
|
10
|
+
| e-commerce, product, cart, payment | E-commerce(电商) | nextjs-saas |
|
|
11
|
+
| dashboard, panel, management | Admin Dashboard(管理面板) | nextjs-fullstack |
|
|
12
|
+
| api, backend, service, rest | API Service(接口服务) | express-api |
|
|
13
|
+
| python, fastapi, django | Python API(Python 接口) | python-fastapi |
|
|
14
|
+
| mobile, android, ios, react native | Mobile App(移动端应用,RN / React Native) | react-native-app |
|
|
15
|
+
| flutter, dart | Mobile App(Flutter) | flutter-app |
|
|
16
|
+
| portfolio, personal, cv | Portfolio(作品集) | nextjs-static |
|
|
17
|
+
| crm, customer, sales | CRM(客户管理) | nextjs-fullstack |
|
|
18
|
+
| saas, subscription, stripe | SaaS(软件即服务) | nextjs-saas |
|
|
19
|
+
| landing, promotional, marketing | Landing Page(落地页) | nextjs-static |
|
|
20
|
+
| docs, documentation | Documentation(文档) | astro-static |
|
|
21
|
+
| extension, plugin, chrome | Browser Extension(浏览器扩展) | chrome-extension |
|
|
22
|
+
| desktop, electron | Desktop App(桌面应用) | electron-desktop |
|
|
23
|
+
| cli, command line, terminal | CLI Tool(命令行工具) | cli-tool |
|
|
24
|
+
| monorepo, workspace | Monorepo(单体仓库) | monorepo-turborepo |
|
|
25
|
+
|
|
26
|
+
## Detection Process(检测流程)
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
1. Tokenize user request(对用户请求分词)
|
|
30
|
+
2. 提取关键词
|
|
31
|
+
3. 确定项目类型
|
|
32
|
+
4. 检测缺失信息 -> 转发给 brainstorming(结构化澄清)
|
|
33
|
+
5. 建议技术栈
|
|
34
|
+
```
|