flyee 0.1.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/LICENSE +21 -0
- package/README.md +134 -0
- package/bin/install.js +357 -0
- package/bridge/bridge.py +1780 -0
- package/bridge/local_tracker.py +722 -0
- package/core/agents/backend-specialist.md +266 -0
- package/core/agents/code-archaeologist.md +106 -0
- package/core/agents/database-architect.md +226 -0
- package/core/agents/debugger.md +225 -0
- package/core/agents/devops-engineer.md +323 -0
- package/core/agents/documentation-writer.md +104 -0
- package/core/agents/explorer-agent.md +73 -0
- package/core/agents/frontend-specialist.md +743 -0
- package/core/agents/game-developer.md +162 -0
- package/core/agents/mobile-developer.md +377 -0
- package/core/agents/orchestrator.md +416 -0
- package/core/agents/penetration-tester.md +188 -0
- package/core/agents/performance-optimizer.md +187 -0
- package/core/agents/product-manager.md +112 -0
- package/core/agents/product-owner.md +95 -0
- package/core/agents/project-planner.md +470 -0
- package/core/agents/qa-automation-engineer.md +103 -0
- package/core/agents/security-auditor.md +170 -0
- package/core/agents/seo-specialist.md +111 -0
- package/core/agents/stitch-designer.md +190 -0
- package/core/agents/tdd-reviewer.md +282 -0
- package/core/agents/test-engineer.md +158 -0
- package/core/scripts/auto_preview.py +148 -0
- package/core/scripts/checklist.py +243 -0
- package/core/scripts/cost_report.py +149 -0
- package/core/scripts/doc-sync-check.py +461 -0
- package/core/scripts/parse_user_stories.py +79 -0
- package/core/scripts/prepare_notion_updates.py +172 -0
- package/core/scripts/print_create_payload.py +18 -0
- package/core/scripts/session_manager.py +120 -0
- package/core/scripts/task_complete.py +127 -0
- package/core/scripts/verify_all.py +327 -0
- package/core/skills/analytics-strategy/SKILL.md +128 -0
- package/core/skills/api-patterns/SKILL.md +81 -0
- package/core/skills/api-patterns/api-style.md +42 -0
- package/core/skills/api-patterns/auth.md +24 -0
- package/core/skills/api-patterns/documentation.md +26 -0
- package/core/skills/api-patterns/graphql.md +41 -0
- package/core/skills/api-patterns/rate-limiting.md +31 -0
- package/core/skills/api-patterns/response.md +37 -0
- package/core/skills/api-patterns/rest.md +40 -0
- package/core/skills/api-patterns/scripts/api_validator.py +211 -0
- package/core/skills/api-patterns/security-testing.md +122 -0
- package/core/skills/api-patterns/trpc.md +41 -0
- package/core/skills/api-patterns/versioning.md +22 -0
- package/core/skills/app-builder/SKILL.md +75 -0
- package/core/skills/app-builder/agent-coordination.md +71 -0
- package/core/skills/app-builder/feature-building.md +53 -0
- package/core/skills/app-builder/project-detection.md +34 -0
- package/core/skills/app-builder/scaffolding.md +118 -0
- package/core/skills/app-builder/tech-stack.md +40 -0
- package/core/skills/app-builder/templates/SKILL.md +39 -0
- package/core/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/core/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/core/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/core/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/core/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/core/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/core/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/core/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/core/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/core/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/core/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/core/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/core/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/core/skills/architecture/SKILL.md +55 -0
- package/core/skills/architecture/context-discovery.md +43 -0
- package/core/skills/architecture/examples.md +94 -0
- package/core/skills/architecture/pattern-selection.md +68 -0
- package/core/skills/architecture/patterns-reference.md +50 -0
- package/core/skills/architecture/trade-off-analysis.md +77 -0
- package/core/skills/atomic-design/SKILL.md +282 -0
- package/core/skills/atomic-design/references/classification-guide.md +132 -0
- package/core/skills/atomic-design/references/quality-checklist.md +60 -0
- package/core/skills/atomic-design/references/stacks/stack-blade.md +254 -0
- package/core/skills/atomic-design/references/stacks/stack-nextjs.md +272 -0
- package/core/skills/atomic-design/references/stacks/stack-react.md +239 -0
- package/core/skills/atomic-design/references/stacks/stack-vue.md +224 -0
- package/core/skills/bash-linux/SKILL.md +199 -0
- package/core/skills/behavioral-modes/SKILL.md +242 -0
- package/core/skills/brainstorming/SKILL.md +163 -0
- package/core/skills/brainstorming/dynamic-questioning.md +373 -0
- package/core/skills/checkpointing-patterns/SKILL.md +163 -0
- package/core/skills/clean-code/SKILL.md +201 -0
- package/core/skills/code-review-checklist/SKILL.md +109 -0
- package/core/skills/code-truth-validation/SKILL.md +149 -0
- package/core/skills/component-library-discovery/SKILL.md +154 -0
- package/core/skills/content-strategy/SKILL.md +222 -0
- package/core/skills/context-budget/SKILL.md +155 -0
- package/core/skills/context-gathering-patterns/SKILL.md +278 -0
- package/core/skills/cost-tracking/SKILL.md +206 -0
- package/core/skills/database-design/SKILL.md +52 -0
- package/core/skills/database-design/database-selection.md +43 -0
- package/core/skills/database-design/indexing.md +39 -0
- package/core/skills/database-design/migrations.md +48 -0
- package/core/skills/database-design/optimization.md +36 -0
- package/core/skills/database-design/orm-selection.md +30 -0
- package/core/skills/database-design/schema-design.md +56 -0
- package/core/skills/database-design/scripts/schema_validator.py +172 -0
- package/core/skills/deployment-procedures/SKILL.md +295 -0
- package/core/skills/design-md/README.md +34 -0
- package/core/skills/design-md/SKILL.md +172 -0
- package/core/skills/design-md/examples/DESIGN.md +154 -0
- package/core/skills/design-system-enforcement/SKILL.md +339 -0
- package/core/skills/doc.md +177 -0
- package/core/skills/document-registry/SKILL.md +130 -0
- package/core/skills/documentation-publishing/SKILL.md +174 -0
- package/core/skills/documentation-templates/SKILL.md +194 -0
- package/core/skills/enhance-prompt/README.md +34 -0
- package/core/skills/enhance-prompt/SKILL.md +204 -0
- package/core/skills/enhance-prompt/references/KEYWORDS.md +114 -0
- package/core/skills/frontend-design/SKILL.md +430 -0
- package/core/skills/frontend-design/animation-guide.md +331 -0
- package/core/skills/frontend-design/color-system.md +311 -0
- package/core/skills/frontend-design/decision-trees.md +418 -0
- package/core/skills/frontend-design/motion-graphics.md +306 -0
- package/core/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/core/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/core/skills/frontend-design/typography-system.md +345 -0
- package/core/skills/frontend-design/ux-psychology.md +541 -0
- package/core/skills/frontend-design/visual-effects.md +383 -0
- package/core/skills/game-development/2d-games/SKILL.md +119 -0
- package/core/skills/game-development/3d-games/SKILL.md +135 -0
- package/core/skills/game-development/SKILL.md +167 -0
- package/core/skills/game-development/game-art/SKILL.md +185 -0
- package/core/skills/game-development/game-audio/SKILL.md +190 -0
- package/core/skills/game-development/game-design/SKILL.md +129 -0
- package/core/skills/game-development/mobile-games/SKILL.md +108 -0
- package/core/skills/game-development/multiplayer/SKILL.md +132 -0
- package/core/skills/game-development/pc-games/SKILL.md +144 -0
- package/core/skills/game-development/vr-ar/SKILL.md +123 -0
- package/core/skills/game-development/web-games/SKILL.md +150 -0
- package/core/skills/geo-fundamentals/SKILL.md +156 -0
- package/core/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/core/skills/git-workflow/SKILL.md +263 -0
- package/core/skills/history-check-patterns/SKILL.md +125 -0
- package/core/skills/i18n-localization/SKILL.md +154 -0
- package/core/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/core/skills/integration-completeness/SKILL.md +219 -0
- package/core/skills/intelligent-routing/SKILL.md +370 -0
- package/core/skills/lint-and-validate/SKILL.md +45 -0
- package/core/skills/lint-and-validate/scripts/lint_runner.py +173 -0
- package/core/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/core/skills/local-verification/SKILL.md +195 -0
- package/core/skills/mcp-builder/SKILL.md +176 -0
- package/core/skills/mobile-design/SKILL.md +394 -0
- package/core/skills/mobile-design/decision-trees.md +516 -0
- package/core/skills/mobile-design/mobile-backend.md +491 -0
- package/core/skills/mobile-design/mobile-color-system.md +420 -0
- package/core/skills/mobile-design/mobile-debugging.md +122 -0
- package/core/skills/mobile-design/mobile-design-thinking.md +357 -0
- package/core/skills/mobile-design/mobile-navigation.md +458 -0
- package/core/skills/mobile-design/mobile-performance.md +767 -0
- package/core/skills/mobile-design/mobile-testing.md +356 -0
- package/core/skills/mobile-design/mobile-typography.md +433 -0
- package/core/skills/mobile-design/platform-android.md +666 -0
- package/core/skills/mobile-design/platform-ios.md +561 -0
- package/core/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/core/skills/mobile-design/touch-psychology.md +537 -0
- package/core/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +312 -0
- package/core/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +240 -0
- package/core/skills/nextjs-react-expert/3-server-server-side-performance.md +490 -0
- package/core/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +264 -0
- package/core/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/core/skills/nextjs-react-expert/6-rendering-rendering-performance.md +432 -0
- package/core/skills/nextjs-react-expert/7-js-javascript-performance.md +684 -0
- package/core/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +150 -0
- package/core/skills/nextjs-react-expert/SKILL.md +267 -0
- package/core/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/core/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/core/skills/nodejs-best-practices/SKILL.md +333 -0
- package/core/skills/notion-task-patterns/SKILL.md +2529 -0
- package/core/skills/page-specifications/SKILL.md +367 -0
- package/core/skills/parallel-agents/SKILL.md +175 -0
- package/core/skills/performance-profiling/SKILL.md +143 -0
- package/core/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/core/skills/plan-writing/SKILL.md +190 -0
- package/core/skills/powershell-windows/SKILL.md +167 -0
- package/core/skills/project-foundation/SKILL.md +117 -0
- package/core/skills/project-setup/SKILL.md +141 -0
- package/core/skills/project-tracking-patterns/SKILL.md +357 -0
- package/core/skills/project-type-discovery/SKILL.md +239 -0
- package/core/skills/python-patterns/SKILL.md +441 -0
- package/core/skills/qa-test-generation/SKILL.md +156 -0
- package/core/skills/react-components/README.md +36 -0
- package/core/skills/react-components/SKILL.md +47 -0
- package/core/skills/react-components/examples/gold-standard-card.tsx +80 -0
- package/core/skills/react-components/package-lock.json +231 -0
- package/core/skills/react-components/package.json +16 -0
- package/core/skills/react-components/resources/architecture-checklist.md +15 -0
- package/core/skills/react-components/resources/component-template.tsx +37 -0
- package/core/skills/react-components/resources/stitch-api-reference.md +14 -0
- package/core/skills/react-components/resources/style-guide.json +27 -0
- package/core/skills/react-components/scripts/fetch-stitch.sh +30 -0
- package/core/skills/react-components/scripts/validate.js +68 -0
- package/core/skills/red-team-tactics/SKILL.md +199 -0
- package/core/skills/remotion/README.md +105 -0
- package/core/skills/remotion/SKILL.md +393 -0
- package/core/skills/remotion/examples/WalkthroughComposition.tsx +78 -0
- package/core/skills/remotion/examples/screens.json +56 -0
- package/core/skills/remotion/resources/composition-checklist.md +124 -0
- package/core/skills/remotion/resources/screen-slide-template.tsx +123 -0
- package/core/skills/remotion/scripts/download-stitch-asset.sh +38 -0
- package/core/skills/seo-fundamentals/SKILL.md +129 -0
- package/core/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/core/skills/server-management/SKILL.md +161 -0
- package/core/skills/session-resilience/SKILL.md +199 -0
- package/core/skills/shadcn-ui/README.md +248 -0
- package/core/skills/shadcn-ui/SKILL.md +326 -0
- package/core/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/core/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/core/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/core/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/core/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/core/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/core/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/core/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/core/skills/state-machine/SKILL.md +264 -0
- package/core/skills/stitch-loop/README.md +54 -0
- package/core/skills/stitch-loop/SKILL.md +203 -0
- package/core/skills/stitch-loop/examples/SITE.md +73 -0
- package/core/skills/stitch-loop/examples/next-prompt.md +25 -0
- package/core/skills/stitch-loop/resources/baton-schema.md +61 -0
- package/core/skills/stitch-loop/resources/site-template.md +104 -0
- package/core/skills/systematic-debugging/SKILL.md +109 -0
- package/core/skills/tailwind-patterns/SKILL.md +284 -0
- package/core/skills/tdd-validation/SKILL.md +243 -0
- package/core/skills/tdd-workflow/SKILL.md +284 -0
- package/core/skills/testing-patterns/SKILL.md +196 -0
- package/core/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/core/skills/ui-ux-discovery/SKILL.md +329 -0
- package/core/skills/ui-validation/SKILL.md +190 -0
- package/core/skills/ui-validation/scripts/ui_antipattern_check.py +317 -0
- package/core/skills/verification-gate/SKILL.md +205 -0
- package/core/skills/vulnerability-scanner/SKILL.md +276 -0
- package/core/skills/vulnerability-scanner/checklists.md +121 -0
- package/core/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/core/skills/web-design-guidelines/SKILL.md +57 -0
- package/core/skills/webapp-testing/SKILL.md +187 -0
- package/core/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/core/templates/ARCHITECTURE.template.md +407 -0
- package/core/templates/project-resources.example.json +71 -0
- package/core/workflows/atomic.md +182 -0
- package/core/workflows/brainstorm.md +134 -0
- package/core/workflows/check-task.md +242 -0
- package/core/workflows/copy-collect.md +306 -0
- package/core/workflows/create-agent.md +33 -0
- package/core/workflows/create-skill.md +39 -0
- package/core/workflows/create-workflow.md +33 -0
- package/core/workflows/create.md +92 -0
- package/core/workflows/debug.md +186 -0
- package/core/workflows/demand.md +443 -0
- package/core/workflows/deploy.md +260 -0
- package/core/workflows/discovery.md +267 -0
- package/core/workflows/document.md +272 -0
- package/core/workflows/ds-components.md +296 -0
- package/core/workflows/ds-init.md +58 -0
- package/core/workflows/ds-refactor.md +245 -0
- package/core/workflows/ds-references.md +197 -0
- package/core/workflows/ds-styleguide.md +237 -0
- package/core/workflows/ds-token-diff.md +103 -0
- package/core/workflows/ds-tokens.md +317 -0
- package/core/workflows/ds-validate.md +309 -0
- package/core/workflows/execute.md +483 -0
- package/core/workflows/extract-template.md +278 -0
- package/core/workflows/fix-failed-tests.md +160 -0
- package/core/workflows/init-project.md +386 -0
- package/core/workflows/legacy-project.md +849 -0
- package/core/workflows/log.md +97 -0
- package/core/workflows/new-project.md +610 -0
- package/core/workflows/new-project.md.bak +3292 -0
- package/core/workflows/new-task.md +404 -0
- package/core/workflows/orchestrate.md +237 -0
- package/core/workflows/page-build.md +296 -0
- package/core/workflows/plan.md +89 -0
- package/core/workflows/prd.md +255 -0
- package/core/workflows/preview.md +81 -0
- package/core/workflows/review-page.md +304 -0
- package/core/workflows/status.md +86 -0
- package/core/workflows/stitch.md +226 -0
- package/core/workflows/task-complete.md +473 -0
- package/core/workflows/task-update.md +163 -0
- package/core/workflows/tdd.md +344 -0
- package/core/workflows/test.md +251 -0
- package/core/workflows/ui-ux-pro-max.md +437 -0
- package/core/workflows/ux-mobile-optimize.md +262 -0
- package/core/workflows/ux-mobile-validate.md +297 -0
- package/engine-files/GEMINI.md +69 -0
- package/package.json +47 -0
- package/runtime-adapters/antigravity.js +26 -0
- package/runtime-adapters/claude.js +57 -0
- package/runtime-adapters/codex.js +51 -0
- package/runtime-adapters/copilot.js +51 -0
- package/runtime-adapters/cursor.js +51 -0
- package/runtime-adapters/gemini-cli.js +30 -0
- package/runtime-adapters/opencode.js +51 -0
- package/runtime-adapters/windsurf.js +51 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Skill: performance-profiling
|
|
4
|
+
Script: lighthouse_audit.py
|
|
5
|
+
Purpose: Run Lighthouse performance audit on a URL
|
|
6
|
+
Usage: python lighthouse_audit.py https://example.com
|
|
7
|
+
Output: JSON with performance scores
|
|
8
|
+
Note: Requires lighthouse CLI (npm install -g lighthouse)
|
|
9
|
+
"""
|
|
10
|
+
import subprocess
|
|
11
|
+
import json
|
|
12
|
+
import sys
|
|
13
|
+
import os
|
|
14
|
+
import tempfile
|
|
15
|
+
|
|
16
|
+
def run_lighthouse(url: str) -> dict:
|
|
17
|
+
"""Run Lighthouse audit on URL."""
|
|
18
|
+
try:
|
|
19
|
+
with tempfile.NamedTemporaryFile(suffix='.json', delete=False) as f:
|
|
20
|
+
output_path = f.name
|
|
21
|
+
|
|
22
|
+
result = subprocess.run(
|
|
23
|
+
[
|
|
24
|
+
"lighthouse",
|
|
25
|
+
url,
|
|
26
|
+
"--output=json",
|
|
27
|
+
f"--output-path={output_path}",
|
|
28
|
+
"--chrome-flags=--headless",
|
|
29
|
+
"--only-categories=performance,accessibility,best-practices,seo"
|
|
30
|
+
],
|
|
31
|
+
capture_output=True,
|
|
32
|
+
text=True,
|
|
33
|
+
timeout=120
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
if os.path.exists(output_path):
|
|
37
|
+
with open(output_path, 'r') as f:
|
|
38
|
+
report = json.load(f)
|
|
39
|
+
os.unlink(output_path)
|
|
40
|
+
|
|
41
|
+
categories = report.get("categories", {})
|
|
42
|
+
return {
|
|
43
|
+
"url": url,
|
|
44
|
+
"scores": {
|
|
45
|
+
"performance": int(categories.get("performance", {}).get("score", 0) * 100),
|
|
46
|
+
"accessibility": int(categories.get("accessibility", {}).get("score", 0) * 100),
|
|
47
|
+
"best_practices": int(categories.get("best-practices", {}).get("score", 0) * 100),
|
|
48
|
+
"seo": int(categories.get("seo", {}).get("score", 0) * 100)
|
|
49
|
+
},
|
|
50
|
+
"summary": get_summary(categories)
|
|
51
|
+
}
|
|
52
|
+
else:
|
|
53
|
+
return {"error": "Lighthouse failed to generate report", "stderr": result.stderr[:500]}
|
|
54
|
+
|
|
55
|
+
except subprocess.TimeoutExpired:
|
|
56
|
+
return {"error": "Lighthouse audit timed out"}
|
|
57
|
+
except FileNotFoundError:
|
|
58
|
+
return {"error": "Lighthouse CLI not found. Install with: npm install -g lighthouse"}
|
|
59
|
+
|
|
60
|
+
def get_summary(categories: dict) -> str:
|
|
61
|
+
"""Generate summary based on scores."""
|
|
62
|
+
perf = categories.get("performance", {}).get("score", 0) * 100
|
|
63
|
+
if perf >= 90:
|
|
64
|
+
return "[OK] Excellent performance"
|
|
65
|
+
elif perf >= 50:
|
|
66
|
+
return "[!] Needs improvement"
|
|
67
|
+
else:
|
|
68
|
+
return "[X] Poor performance"
|
|
69
|
+
|
|
70
|
+
if __name__ == "__main__":
|
|
71
|
+
if len(sys.argv) < 2:
|
|
72
|
+
print(json.dumps({"error": "Usage: python lighthouse_audit.py <url>"}))
|
|
73
|
+
sys.exit(1)
|
|
74
|
+
|
|
75
|
+
result = run_lighthouse(sys.argv[1])
|
|
76
|
+
print(json.dumps(result, indent=2))
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-writing
|
|
3
|
+
description: Structured task planning with clear breakdowns, dependencies, and verification criteria. Use when implementing features, refactoring, or any multi-step work.
|
|
4
|
+
allowed-tools: Read, Glob, Grep
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Writing
|
|
8
|
+
|
|
9
|
+
> Source: obra/superpowers
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
This skill provides a framework for breaking down work into clear, actionable tasks with verification criteria.
|
|
13
|
+
|
|
14
|
+
## Task Breakdown Principles
|
|
15
|
+
|
|
16
|
+
### 1. Small, Focused Tasks
|
|
17
|
+
- Each task should take 2-5 minutes
|
|
18
|
+
- One clear outcome per task
|
|
19
|
+
- Independently verifiable
|
|
20
|
+
|
|
21
|
+
### 2. Clear Verification
|
|
22
|
+
- How do you know it's done?
|
|
23
|
+
- What can you check/test?
|
|
24
|
+
- What's the expected output?
|
|
25
|
+
|
|
26
|
+
### 3. Logical Ordering
|
|
27
|
+
- Dependencies identified
|
|
28
|
+
- Parallel work where possible
|
|
29
|
+
- Critical path highlighted
|
|
30
|
+
- **Phase X: Verification is always LAST**
|
|
31
|
+
|
|
32
|
+
### 4. Dynamic Naming in Project Root
|
|
33
|
+
- Plan files are saved as `{task-slug}.md` in the PROJECT ROOT
|
|
34
|
+
- Name derived from task (e.g., "add auth" → `auth-feature.md`)
|
|
35
|
+
- **NEVER** inside `.claude/`, `docs/`, or temp folders
|
|
36
|
+
|
|
37
|
+
## Planning Principles (NOT Templates!)
|
|
38
|
+
|
|
39
|
+
> 🔴 **NO fixed templates. Each plan is UNIQUE to the task.**
|
|
40
|
+
|
|
41
|
+
### Principle 1: Keep It SHORT
|
|
42
|
+
|
|
43
|
+
| ❌ Wrong | ✅ Right |
|
|
44
|
+
|----------|----------|
|
|
45
|
+
| 50 tasks with sub-sub-tasks | 5-10 clear tasks max |
|
|
46
|
+
| Every micro-step listed | Only actionable items |
|
|
47
|
+
| Verbose descriptions | One-line per task |
|
|
48
|
+
|
|
49
|
+
> **Rule:** If plan is longer than 1 page, it's too long. Simplify.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### Principle 2: Be SPECIFIC, Not Generic
|
|
54
|
+
|
|
55
|
+
| ❌ Wrong | ✅ Right |
|
|
56
|
+
|----------|----------|
|
|
57
|
+
| "Set up project" | "Run `npx create-next-app`" |
|
|
58
|
+
| "Add authentication" | "Install next-auth, create `/api/auth/[...nextauth].ts`" |
|
|
59
|
+
| "Style the UI" | "Add Tailwind classes to `Header.tsx`" |
|
|
60
|
+
|
|
61
|
+
> **Rule:** Each task should have a clear, verifiable outcome.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
### Principle 3: Dynamic Content Based on Project Type
|
|
66
|
+
|
|
67
|
+
**For NEW PROJECT:**
|
|
68
|
+
- What tech stack? (decide first)
|
|
69
|
+
- What's the MVP? (minimal features)
|
|
70
|
+
- What's the file structure?
|
|
71
|
+
|
|
72
|
+
**For FEATURE ADDITION:**
|
|
73
|
+
- Which files are affected?
|
|
74
|
+
- What dependencies needed?
|
|
75
|
+
- How to verify it works?
|
|
76
|
+
|
|
77
|
+
**For BUG FIX:**
|
|
78
|
+
- What's the root cause?
|
|
79
|
+
- What file/line to change?
|
|
80
|
+
- How to test the fix?
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
### Principle 4: Scripts Are Project-Specific
|
|
85
|
+
|
|
86
|
+
> 🔴 **DO NOT copy-paste script commands. Choose based on project type.**
|
|
87
|
+
|
|
88
|
+
| Project Type | Relevant Scripts |
|
|
89
|
+
|--------------|------------------|
|
|
90
|
+
| Frontend/React | `ux_audit.py`, `accessibility_checker.py` |
|
|
91
|
+
| Backend/API | `api_validator.py`, `security_scan.py` |
|
|
92
|
+
| Mobile | `mobile_audit.py` |
|
|
93
|
+
| Database | `schema_validator.py` |
|
|
94
|
+
| Full-stack | Mix of above based on what you touched |
|
|
95
|
+
|
|
96
|
+
**Wrong:** Adding all scripts to every plan
|
|
97
|
+
**Right:** Only scripts relevant to THIS task
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Principle 5: Verification is Simple
|
|
102
|
+
|
|
103
|
+
| ❌ Wrong | ✅ Right |
|
|
104
|
+
|----------|----------|
|
|
105
|
+
| "Verify the component works correctly" | "Run `npm run dev`, click button, see toast" |
|
|
106
|
+
| "Test the API" | "curl localhost:3000/api/users returns 200" |
|
|
107
|
+
| "Check styles" | "Open browser, verify dark mode toggle works" |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Plan Structure (Flexible, Not Fixed!)
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
# [Task Name]
|
|
115
|
+
|
|
116
|
+
## Goal
|
|
117
|
+
One sentence: What are we building/fixing?
|
|
118
|
+
|
|
119
|
+
## Tasks
|
|
120
|
+
- [ ] Task 1: [Specific action] → Verify: [How to check]
|
|
121
|
+
- [ ] Task 2: [Specific action] → Verify: [How to check]
|
|
122
|
+
- [ ] Task 3: [Specific action] → Verify: [How to check]
|
|
123
|
+
|
|
124
|
+
## Done When
|
|
125
|
+
- [ ] [Main success criteria]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
> **That's it.** No phases, no sub-sections unless truly needed.
|
|
129
|
+
> Keep it minimal. Add complexity only when required.
|
|
130
|
+
|
|
131
|
+
## Notes
|
|
132
|
+
[Any important considerations]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### Principle 6: UI Component Decomposition Gate (MANDATORY for UI tasks)
|
|
138
|
+
|
|
139
|
+
> 🔴 **Before listing ANY `[NEW]` UI component in the plan, classify it.**
|
|
140
|
+
> A plan that puts a generic visual concept (Timeline, KpiCard, DataTable) directly inside
|
|
141
|
+
> `features/{name}/components/` without extracting the reusable primitive is **INVALID**.
|
|
142
|
+
|
|
143
|
+
**For EACH new UI component in the plan, ask:**
|
|
144
|
+
|
|
145
|
+
| # | Question | If YES | If NO |
|
|
146
|
+
|---|----------|--------|-------|
|
|
147
|
+
| 1 | Is the **visual concept** usable in 2+ features? (e.g. Timeline, StatCard, DataTable) | → Extract generic primitive to `components/ui/` | Continue ↓ |
|
|
148
|
+
| 2 | Could another dev reuse the visual without knowing the business context? | → Extract to `components/ui/` | Continue ↓ |
|
|
149
|
+
| 3 | Is it purely business-specific with no reusable visual? | → OK in `features/{name}/components/` | → `components/ui/` |
|
|
150
|
+
|
|
151
|
+
**Plan format when decomposition applies:**
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
## New Components
|
|
155
|
+
|
|
156
|
+
### Generic (components/ui/) — reusable primitives
|
|
157
|
+
- [NEW] `components/ui/Timeline/` — Vertical timeline with connectors (Atom/Molecule)
|
|
158
|
+
- [NEW] `components/ui/KpiCard/` — Stat card with label, value, trend (Molecule)
|
|
159
|
+
|
|
160
|
+
### Feature-specific (features/progress/components/) — business orchestrators
|
|
161
|
+
- [NEW] `SprintTimeline.tsx` — Maps sprint data → `<Timeline>` items
|
|
162
|
+
- [NEW] `ProgressOverview.tsx` — Maps project KPIs → grid of `<KpiCard>`
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
> **Anti-pattern:** `[NEW] features/progress/components/SprintTimeline.tsx` with its own
|
|
166
|
+
> `.module.css` that builds a full timeline visual from scratch. This locks the Timeline
|
|
167
|
+
> concept inside one feature and guarantees duplication when Activity or Deployments need it.
|
|
168
|
+
|
|
169
|
+
> **Historical Lesson:** `SprintTimeline` and `ProgressOverview` were planned entirely inside
|
|
170
|
+
> `features/progress/` without extracting `Timeline` and `KpiCard` as generic primitives.
|
|
171
|
+
> Result: the visual concepts would be trapped in one feature, forcing duplication later.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Best Practices (Quick Reference)
|
|
176
|
+
|
|
177
|
+
1. **Start with goal** - What are we building/fixing?
|
|
178
|
+
2. **Max 10 tasks** - If more, break into multiple plans
|
|
179
|
+
3. **Each task verifiable** - Clear "done" criteria
|
|
180
|
+
4. **Project-specific** - No copy-paste templates
|
|
181
|
+
5. **Update as you go** - Mark `[x]` when complete
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## When to Use
|
|
186
|
+
|
|
187
|
+
- New project from scratch
|
|
188
|
+
- Adding a feature
|
|
189
|
+
- Fixing a bug (if complex)
|
|
190
|
+
- Refactoring multiple files
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: powershell-windows
|
|
3
|
+
description: PowerShell Windows patterns. Critical pitfalls, operator syntax, error handling.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# PowerShell Windows Patterns
|
|
8
|
+
|
|
9
|
+
> Critical patterns and pitfalls for Windows PowerShell.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Operator Syntax Rules
|
|
14
|
+
|
|
15
|
+
### CRITICAL: Parentheses Required
|
|
16
|
+
|
|
17
|
+
| ❌ Wrong | ✅ Correct |
|
|
18
|
+
|----------|-----------|
|
|
19
|
+
| `if (Test-Path "a" -or Test-Path "b")` | `if ((Test-Path "a") -or (Test-Path "b"))` |
|
|
20
|
+
| `if (Get-Item $x -and $y -eq 5)` | `if ((Get-Item $x) -and ($y -eq 5))` |
|
|
21
|
+
|
|
22
|
+
**Rule:** Each cmdlet call MUST be in parentheses when using logical operators.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 2. Unicode/Emoji Restriction
|
|
27
|
+
|
|
28
|
+
### CRITICAL: No Unicode in Scripts
|
|
29
|
+
|
|
30
|
+
| Purpose | ❌ Don't Use | ✅ Use |
|
|
31
|
+
|---------|-------------|--------|
|
|
32
|
+
| Success | ✅ ✓ | [OK] [+] |
|
|
33
|
+
| Error | ❌ ✗ 🔴 | [!] [X] |
|
|
34
|
+
| Warning | ⚠️ 🟡 | [*] [WARN] |
|
|
35
|
+
| Info | ℹ️ 🔵 | [i] [INFO] |
|
|
36
|
+
| Progress | ⏳ | [...] |
|
|
37
|
+
|
|
38
|
+
**Rule:** Use ASCII characters only in PowerShell scripts.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. Null Check Patterns
|
|
43
|
+
|
|
44
|
+
### Always Check Before Access
|
|
45
|
+
|
|
46
|
+
| ❌ Wrong | ✅ Correct |
|
|
47
|
+
|----------|-----------|
|
|
48
|
+
| `$array.Count -gt 0` | `$array -and $array.Count -gt 0` |
|
|
49
|
+
| `$text.Length` | `if ($text) { $text.Length }` |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 4. String Interpolation
|
|
54
|
+
|
|
55
|
+
### Complex Expressions
|
|
56
|
+
|
|
57
|
+
| ❌ Wrong | ✅ Correct |
|
|
58
|
+
|----------|-----------|
|
|
59
|
+
| `"Value: $($obj.prop.sub)"` | Store in variable first |
|
|
60
|
+
|
|
61
|
+
**Pattern:**
|
|
62
|
+
```
|
|
63
|
+
$value = $obj.prop.sub
|
|
64
|
+
Write-Output "Value: $value"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## 5. Error Handling
|
|
70
|
+
|
|
71
|
+
### ErrorActionPreference
|
|
72
|
+
|
|
73
|
+
| Value | Use |
|
|
74
|
+
|-------|-----|
|
|
75
|
+
| Stop | Development (fail fast) |
|
|
76
|
+
| Continue | Production scripts |
|
|
77
|
+
| SilentlyContinue | When errors expected |
|
|
78
|
+
|
|
79
|
+
### Try/Catch Pattern
|
|
80
|
+
|
|
81
|
+
- Don't return inside try block
|
|
82
|
+
- Use finally for cleanup
|
|
83
|
+
- Return after try/catch
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 6. File Paths
|
|
88
|
+
|
|
89
|
+
### Windows Path Rules
|
|
90
|
+
|
|
91
|
+
| Pattern | Use |
|
|
92
|
+
|---------|-----|
|
|
93
|
+
| Literal path | `C:\Users\User\file.txt` |
|
|
94
|
+
| Variable path | `Join-Path $env:USERPROFILE "file.txt"` |
|
|
95
|
+
| Relative | `Join-Path $ScriptDir "data"` |
|
|
96
|
+
|
|
97
|
+
**Rule:** Use Join-Path for cross-platform safety.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 7. Array Operations
|
|
102
|
+
|
|
103
|
+
### Correct Patterns
|
|
104
|
+
|
|
105
|
+
| Operation | Syntax |
|
|
106
|
+
|-----------|--------|
|
|
107
|
+
| Empty array | `$array = @()` |
|
|
108
|
+
| Add item | `$array += $item` |
|
|
109
|
+
| ArrayList add | `$list.Add($item) | Out-Null` |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 8. JSON Operations
|
|
114
|
+
|
|
115
|
+
### CRITICAL: Depth Parameter
|
|
116
|
+
|
|
117
|
+
| ❌ Wrong | ✅ Correct |
|
|
118
|
+
|----------|-----------|
|
|
119
|
+
| `ConvertTo-Json` | `ConvertTo-Json -Depth 10` |
|
|
120
|
+
|
|
121
|
+
**Rule:** Always specify `-Depth` for nested objects.
|
|
122
|
+
|
|
123
|
+
### File Operations
|
|
124
|
+
|
|
125
|
+
| Operation | Pattern |
|
|
126
|
+
|-----------|---------|
|
|
127
|
+
| Read | `Get-Content "file.json" -Raw | ConvertFrom-Json` |
|
|
128
|
+
| Write | `$data | ConvertTo-Json -Depth 10 | Out-File "file.json" -Encoding UTF8` |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 9. Common Errors
|
|
133
|
+
|
|
134
|
+
| Error Message | Cause | Fix |
|
|
135
|
+
|---------------|-------|-----|
|
|
136
|
+
| "parameter 'or'" | Missing parentheses | Wrap cmdlets in () |
|
|
137
|
+
| "Unexpected token" | Unicode character | Use ASCII only |
|
|
138
|
+
| "Cannot find property" | Null object | Check null first |
|
|
139
|
+
| "Cannot convert" | Type mismatch | Use .ToString() |
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 10. Script Template
|
|
144
|
+
|
|
145
|
+
```powershell
|
|
146
|
+
# Strict mode
|
|
147
|
+
Set-StrictMode -Version Latest
|
|
148
|
+
$ErrorActionPreference = "Continue"
|
|
149
|
+
|
|
150
|
+
# Paths
|
|
151
|
+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
152
|
+
|
|
153
|
+
# Main
|
|
154
|
+
try {
|
|
155
|
+
# Logic here
|
|
156
|
+
Write-Output "[OK] Done"
|
|
157
|
+
exit 0
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
Write-Warning "Error: $_"
|
|
161
|
+
exit 1
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
> **Remember:** PowerShell has unique syntax rules. Parentheses, ASCII-only, and null checks are non-negotiable.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-foundation
|
|
3
|
+
description: Protocolo para gerar os arquivos de fundação de qualquer projeto (README, .env.example, SECURITY.md, docs/INDEX.md, ADR-000). Usado por new-project (Phase 2.05) e legacy-project (Phase 0.7). Context-aware para projetos novos vs legados.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Skill: project-foundation
|
|
7
|
+
|
|
8
|
+
## Propósito
|
|
9
|
+
|
|
10
|
+
Garantir que todo projeto tenha a infraestrutura mínima de documentação **antes** de qualquer trabalho de feature ou análise. Um agente que abrir o projeto futuramente precisa de um ponto de entrada claro.
|
|
11
|
+
|
|
12
|
+
> [!IMPORTANT]
|
|
13
|
+
> Este skill é chamado automaticamente por workflows. Não pule nenhum dos 5 artefatos — todos são necessários para que agentes futuros funcionem corretamente.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Contextos de Uso
|
|
18
|
+
|
|
19
|
+
| Contexto | Trigger | Comportamento |
|
|
20
|
+
|----------|---------|---------------|
|
|
21
|
+
| `new` | `new-project` Phase 2.05 | Gera todos os arquivos do zero a partir dos templates |
|
|
22
|
+
| `legacy` | `legacy-project` Phase 0.7 | Adapta ao que já existe: README existente é atualizado, `.env.example` é extraído das variáveis detectadas no código |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Protocolo de Execução
|
|
27
|
+
|
|
28
|
+
### Passo 1: README.md
|
|
29
|
+
|
|
30
|
+
**Modo `new`:**
|
|
31
|
+
> Gerar do zero usando `readme-template.md`. Preencher stack, comandos de run/test/build e environments.
|
|
32
|
+
|
|
33
|
+
**Modo `legacy`:**
|
|
34
|
+
> 1. Verificar se `README.md` já existe
|
|
35
|
+
> 2. Se existe: atualizar seções desatualizadas (stack, comandos, envs) sem destruir conteúdo
|
|
36
|
+
> 3. Se não existe: gerar do zero como se fosse modo `new`
|
|
37
|
+
|
|
38
|
+
**Gate:** README deve ter no mínimo: descrição, stack, como rodar localmente, environments.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
### Passo 2: .env.example
|
|
43
|
+
|
|
44
|
+
**Modo `new`:**
|
|
45
|
+
> Gerar do zero usando `env-template.md`. Preencher com as variáveis já conhecidas (DB, auth, ports).
|
|
46
|
+
|
|
47
|
+
**Modo `legacy`:**
|
|
48
|
+
> 1. Buscar variáveis de ambiente no código (`process.env.*`, `os.environ`, `config(*)`)
|
|
49
|
+
> 2. Buscar `.env`, `.env.local`, `.env.development` (se existirem e não estiverem no .gitignore, ler)
|
|
50
|
+
> 3. Gerar `.env.example` preenchido com as variáveis encontradas (valores = placeholders)
|
|
51
|
+
> 4. Anotar quais são REQUIRED vs OPTIONAL com base no uso
|
|
52
|
+
|
|
53
|
+
**Gate:** `.env.example` deve cobrir todas as variáveis usadas no código.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
### Passo 3: SECURITY.md
|
|
58
|
+
|
|
59
|
+
**Ambos os modos:**
|
|
60
|
+
> Gerar usando `security-template.md`. Preencher:
|
|
61
|
+
> - Versões suportadas (detectar versão atual do projeto)
|
|
62
|
+
> - Email de segurança (perguntar ao usuário se não encontrado no repo)
|
|
63
|
+
> - Stack-specific items (ex: se Python → `pip-audit`; se Node → `npm audit`)
|
|
64
|
+
|
|
65
|
+
**Modo `legacy`:**
|
|
66
|
+
> Adicionar nota na seção "Security Practices" sobre dívida de segurança conhecida (a ser preenchida após Phase 5.6).
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
### Passo 4: docs/INDEX.md (Document Registry)
|
|
71
|
+
|
|
72
|
+
**Ambos os modos:**
|
|
73
|
+
> Criar `docs/INDEX.md` usando `docs-index-template.md`.
|
|
74
|
+
|
|
75
|
+
**Modo `new`:**
|
|
76
|
+
> INDEX começa com entries `pending` para todos os documentos que serão gerados pelo workflow.
|
|
77
|
+
|
|
78
|
+
**Modo `legacy`:**
|
|
79
|
+
> INDEX começa vazio (status = pending) e é preenchido incrementalmente conforme documentos são criados.
|
|
80
|
+
> Adicionar entry inicial:
|
|
81
|
+
> ```
|
|
82
|
+
> | LEGACY-ANALYSIS | Analysis | docs/LEGACY-PROGRESS.md | in_progress | - | - |
|
|
83
|
+
> ```
|
|
84
|
+
|
|
85
|
+
**Gate:** `docs/INDEX.md` criado e commitável (não vazio, com pelo menos a entry de foundation).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Passo 5: docs/adr/ADR-000.md
|
|
90
|
+
|
|
91
|
+
**Modo `new`:**
|
|
92
|
+
> Criar `docs/adr/ADR-000-initial-setup.md` documentando as decisões de stack e arquitetura
|
|
93
|
+
> iniciais. Status: `accepted`.
|
|
94
|
+
|
|
95
|
+
**Modo `legacy`:**
|
|
96
|
+
> Criar `docs/adr/ADR-000-legacy-analysis.md` documentando a decisão de iniciar engenharia
|
|
97
|
+
> reversa. Preencher template com:
|
|
98
|
+
> - **Context:** Projeto existente sem documentação
|
|
99
|
+
> - **Decision:** Iniciar reverse engineering com `/legacy-project`
|
|
100
|
+
> - **Consequences:** Processo incremental por módulo, análise pode levar múltiplas sessões
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Checklist de Conclusão
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
[ ] README.md gerado/atualizado
|
|
108
|
+
[ ] .env.example gerado (todas as variáveis cobertas)
|
|
109
|
+
[ ] SECURITY.md gerado
|
|
110
|
+
[ ] docs/INDEX.md criado com entries iniciais
|
|
111
|
+
[ ] docs/adr/ADR-000.md criado
|
|
112
|
+
[ ] Skill document-registry carregado para registrar cada doc criado acima no INDEX
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
> [!CAUTION]
|
|
116
|
+
> **NÃO prosseguir para o próximo workflow step** sem todos os itens marcados.
|
|
117
|
+
> Se `docs/` não existir: criar o diretório antes de gerar os arquivos.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-setup
|
|
3
|
+
description: Project initialization and infrastructure setup. Init commands by stack, test runner config, folder structure, and environment separation. Used before TDD methodology phase.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Project Setup
|
|
7
|
+
|
|
8
|
+
> Prepare base infrastructure before writing tests. No tests without a working project.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🎯 When to Use
|
|
13
|
+
|
|
14
|
+
| Workflow | Phase | Trigger |
|
|
15
|
+
|----------|-------|---------|
|
|
16
|
+
| `/new-project` | Phase 3.5 | After Breakdown |
|
|
17
|
+
| `/legacy-project` | Verify setup | Ensure test runner exists |
|
|
18
|
+
| `/new-task` | If missing infra | Before adding feature |
|
|
19
|
+
|
|
20
|
+
> [!CAUTION]
|
|
21
|
+
> Do NOT start TDD (Phase 4) without infrastructure configured.
|
|
22
|
+
> Cannot write tests without an initialized project.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 🆕 New Project (No Existing Code)
|
|
27
|
+
|
|
28
|
+
### 1. Initialize Project
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Web (Next.js)
|
|
32
|
+
npx -y create-next-app@latest ./ --typescript --tailwind --app --src-dir --import-alias "@/*"
|
|
33
|
+
|
|
34
|
+
# Mobile (React Native)
|
|
35
|
+
npx react-native init {ProjectName} --template react-native-template-typescript
|
|
36
|
+
|
|
37
|
+
# Package (TypeScript)
|
|
38
|
+
npm init -y && npm install -D typescript tsup vitest
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. Configure Test Runner
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Next.js / React
|
|
45
|
+
npm install -D vitest @testing-library/react @testing-library/dom jsdom @vitejs/plugin-react
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 3. Create Base Structure
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
src/
|
|
52
|
+
├── app/ # Routes (Next.js)
|
|
53
|
+
├── components/ # UI components
|
|
54
|
+
├── lib/ # Business logic
|
|
55
|
+
├── tests/ # Tests
|
|
56
|
+
└── types/ # TypeScript types
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 4. Configure vitest.config.ts
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { defineConfig } from 'vitest/config';
|
|
63
|
+
import react from '@vitejs/plugin-react';
|
|
64
|
+
|
|
65
|
+
export default defineConfig({
|
|
66
|
+
plugins: [react()],
|
|
67
|
+
test: {
|
|
68
|
+
environment: 'jsdom',
|
|
69
|
+
globals: true,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 5. Verify Setup
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm test -- --run # Must run without errors (0 tests ok)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 6. Configure Environment Separation (MANDATORY)
|
|
81
|
+
|
|
82
|
+
> Delegate to skill `deployment-procedures` section "Environment Separation".
|
|
83
|
+
> Follow all rules for `.env.local`, `.env.example`, and `.env.production`.
|
|
84
|
+
|
|
85
|
+
**Quick checklist:**
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
⚠️ ENVIRONMENT VALIDATION GATE
|
|
89
|
+
|
|
90
|
+
[ ] `.env.example` exists with generic placeholders
|
|
91
|
+
[ ] `.env.local` exists with DEVELOPMENT credentials
|
|
92
|
+
[ ] `.env.local` does NOT point to production projects
|
|
93
|
+
[ ] `.gitignore` includes `.env.local` and `.env.production`
|
|
94
|
+
[ ] Production variables will be configured ONLY on deploy platform (Vercel)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**If dev projects don't exist, ask the user:**
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## 🔐 Environment Separation
|
|
101
|
+
|
|
102
|
+
For security, I need **DEVELOPMENT** credentials (not production).
|
|
103
|
+
|
|
104
|
+
| Service | Required Action |
|
|
105
|
+
|---------|----------------|
|
|
106
|
+
| **Supabase** | Create project `{name}-dev` in Supabase dashboard |
|
|
107
|
+
| **Stripe** | Use `test` keys (already available in dashboard) |
|
|
108
|
+
| **Sanity** | Create `development` dataset (Settings → Datasets) |
|
|
109
|
+
|
|
110
|
+
When you have the dev credentials, let me know to configure `.env.local`.
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 🔄 Existing Project (Has Code)
|
|
116
|
+
|
|
117
|
+
1. Verify test runner exists
|
|
118
|
+
2. If missing → install (step 2 above)
|
|
119
|
+
3. Verify folder structure
|
|
120
|
+
4. **Verify environment separation (step 6 above)**
|
|
121
|
+
5. Proceed to TDD phase
|
|
122
|
+
|
|
123
|
+
> [!TIP]
|
|
124
|
+
> If project already exists and has tests configured, this phase is automatic (verification only).
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 🔴 Exit Gate
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
[ ] Project initialized (package.json exists)
|
|
132
|
+
[ ] Test runner configured (vitest/jest)
|
|
133
|
+
[ ] Folder structure created
|
|
134
|
+
[ ] `npm test` runs without errors
|
|
135
|
+
[ ] **Environments separated (dev ≠ prod)** ⭐
|
|
136
|
+
[ ] **`.env.local` with DEVELOPMENT credentials only** ⭐
|
|
137
|
+
[ ] **`.env.example` with generic placeholders** ⭐
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
> After passing this gate, sync setup tasks with tracker.
|
|
141
|
+
> Follow skill `project-tracking-patterns` for sync protocol.
|