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,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Responsible for evaluating mobile-first usability of already composed pages or flows
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## 1. Purpose (Authority Scope)
|
|
6
|
+
|
|
7
|
+
Mobile-First UX Governance Workflow is responsible for **evaluating mobile-first usability** of already composed pages or flows, ensuring that:
|
|
8
|
+
|
|
9
|
+
* The mobile viewport is treated as the primary experience
|
|
10
|
+
* Touch interactions are safe, efficient, and predictable
|
|
11
|
+
* Information hierarchy works vertically
|
|
12
|
+
* No critical usability blockers exist on mobile devices
|
|
13
|
+
|
|
14
|
+
### Explicitly NOT allowed:
|
|
15
|
+
|
|
16
|
+
* Create or modify design tokens
|
|
17
|
+
* Create or modify components
|
|
18
|
+
* Rewrite or edit copy
|
|
19
|
+
* Alter visual identity
|
|
20
|
+
* Unlock UI progression on its own
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 2. Execution Preconditions
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"design_system": "validated",
|
|
29
|
+
"page": "exists",
|
|
30
|
+
"page_build": "completed",
|
|
31
|
+
"mode": "production | exploratory"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
❌ Cannot run if `/page-build` has not been completed
|
|
36
|
+
❌ Cannot run on non-existent pages
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 3. Required Inputs
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"page": "/route",
|
|
45
|
+
"viewport": {
|
|
46
|
+
"min": 320,
|
|
47
|
+
"max": 767,
|
|
48
|
+
"primary": 375
|
|
49
|
+
},
|
|
50
|
+
"ux_focus": [
|
|
51
|
+
"layout",
|
|
52
|
+
"interaction",
|
|
53
|
+
"content",
|
|
54
|
+
"accessibility",
|
|
55
|
+
"perceived_performance"
|
|
56
|
+
],
|
|
57
|
+
"control": {
|
|
58
|
+
"confidence_level": "low | medium | high",
|
|
59
|
+
"strict_mode": true
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Notes:
|
|
65
|
+
|
|
66
|
+
* `primary` defines the baseline breakpoint for validation
|
|
67
|
+
* `strict_mode=true` enables **blocking issues**
|
|
68
|
+
* `confidence_level` regulates recommendation strictness
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 4. Inspection Scope
|
|
73
|
+
|
|
74
|
+
### 4.1 Layout & Hierarchy (Mobile-First)
|
|
75
|
+
|
|
76
|
+
**Mandatory checks:**
|
|
77
|
+
|
|
78
|
+
* Logical vertical reading order
|
|
79
|
+
* Critical content visible above the fold
|
|
80
|
+
* Excessive stacking (more than 6 consecutive blocks)
|
|
81
|
+
* Grid structures that collapse incorrectly on mobile
|
|
82
|
+
* Containers lacking minimum horizontal padding
|
|
83
|
+
* Horizontal sections without scroll support
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
### 4.2 Touch Interaction
|
|
88
|
+
|
|
89
|
+
**Mandatory checks:**
|
|
90
|
+
|
|
91
|
+
* Touch targets ≥ 44px
|
|
92
|
+
* Minimum spacing between clickable elements
|
|
93
|
+
* CTAs not glued to screen edges
|
|
94
|
+
* Sticky elements not covering content
|
|
95
|
+
* Functional scrolling (no unintended overflow locks)
|
|
96
|
+
* Clear active states for touch interactions
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### 4.3 Content & Copy (Mobile Context)
|
|
101
|
+
|
|
102
|
+
**Mandatory checks:**
|
|
103
|
+
|
|
104
|
+
* Headings breaking poorly on small screens
|
|
105
|
+
* Consecutive or duplicated CTAs
|
|
106
|
+
* Truncated labels or buttons
|
|
107
|
+
* Excessive text above the fold
|
|
108
|
+
* Instructions relying on hover interactions
|
|
109
|
+
|
|
110
|
+
⚠️ Detection only — never rewrites content
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
### 4.4 Mobile Accessibility
|
|
115
|
+
|
|
116
|
+
Complementary to WCAG:
|
|
117
|
+
|
|
118
|
+
* Visible focus states for touch and keyboard navigation
|
|
119
|
+
* Logical tab order on mobile
|
|
120
|
+
* Zoom support up to 200%
|
|
121
|
+
* Inputs not blocked by virtual keyboards
|
|
122
|
+
* Contrast remaining functional in outdoor conditions
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### 4.5 Perceived Performance (UX-Driven)
|
|
127
|
+
|
|
128
|
+
* Delayed loading of critical content
|
|
129
|
+
* Noticeable layout shifts
|
|
130
|
+
* Missing skeletons in key areas
|
|
131
|
+
* Images not optimized for mobile
|
|
132
|
+
* Excessive initial cognitive load
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 5. Issue Severity Model
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"severity_levels": {
|
|
141
|
+
"blocking": "Prevents correct mobile usage",
|
|
142
|
+
"major": "Significantly degrades UX or conversion",
|
|
143
|
+
"minor": "Recommended improvement"
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Rules:
|
|
149
|
+
|
|
150
|
+
* **Any `blocking` issue = FAIL**
|
|
151
|
+
* Accumulated `major` issues may cause FAIL beyond thresholds
|
|
152
|
+
* `minor` issues never block progression
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 6. Output Contract
|
|
157
|
+
|
|
158
|
+
### 6.1 Overall Result
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"ux_mobile_validation": "PASS | FAIL",
|
|
163
|
+
"summary": {
|
|
164
|
+
"blocking": 2,
|
|
165
|
+
"major": 4,
|
|
166
|
+
"minor": 5
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
### 6.2 Issue List
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"issues": [
|
|
178
|
+
{
|
|
179
|
+
"id": "UXM-001",
|
|
180
|
+
"severity": "blocking",
|
|
181
|
+
"category": "interaction",
|
|
182
|
+
"description": "Primary CTA is below the fold on mobile",
|
|
183
|
+
"location": {
|
|
184
|
+
"section": "Hero",
|
|
185
|
+
"viewport": 375
|
|
186
|
+
},
|
|
187
|
+
"recommended_action": "Reorder content or reduce hero height",
|
|
188
|
+
"allowed_fix_scope": "page-build"
|
|
189
|
+
}
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
🔒 `allowed_fix_scope` is **never** `design-system` or `tokens`
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
### 6.3 Mandatory Next Step
|
|
199
|
+
|
|
200
|
+
If **FAIL**:
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"next_step": {
|
|
205
|
+
"action": "/page-build",
|
|
206
|
+
"mode": "extend",
|
|
207
|
+
"scope": [
|
|
208
|
+
"Hero",
|
|
209
|
+
"Header"
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
If **PASS**:
|
|
216
|
+
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"next_step": {
|
|
220
|
+
"action": "continue"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 7. Integration with `/next-step`
|
|
228
|
+
|
|
229
|
+
### Formal Rule:
|
|
230
|
+
|
|
231
|
+
```text
|
|
232
|
+
/ux-mobile-validate
|
|
233
|
+
→ PASS → continue
|
|
234
|
+
→ FAIL → /page-build (extend)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
❌ Validation cannot be skipped if `strict_mode=true`
|
|
238
|
+
❌ Scope cannot be altered without explicit authorization
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 8. Logs & Audit Trail
|
|
243
|
+
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"audit": {
|
|
247
|
+
"validated_at": "ISO-8601",
|
|
248
|
+
"viewports_tested": [320, 375, 414, 767],
|
|
249
|
+
"design_system_version": "x.y.z",
|
|
250
|
+
"confidence_level": "medium"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 9. Hard Constraints (Non-Negotiable)
|
|
258
|
+
|
|
259
|
+
* Mobile UX **never** creates UI
|
|
260
|
+
* Mobile UX **never** alters visual identity
|
|
261
|
+
* Mobile UX **never** modifies tokens
|
|
262
|
+
* Mobile UX **can block** progression
|
|
263
|
+
* Mobile UX is **always mobile-first**
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 10. Final Project State
|
|
268
|
+
|
|
269
|
+
After **PASS**:
|
|
270
|
+
|
|
271
|
+
```json
|
|
272
|
+
{
|
|
273
|
+
"ux_mobile": "validated"
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
After **FAIL**:
|
|
278
|
+
|
|
279
|
+
```json
|
|
280
|
+
{
|
|
281
|
+
"ux_mobile": "failed"
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 11. Why This Works in Your System
|
|
288
|
+
|
|
289
|
+
Because it:
|
|
290
|
+
|
|
291
|
+
* Respects strict domain separation
|
|
292
|
+
* Acts as a **UX auditor**, not a designer
|
|
293
|
+
* Is predictable, explainable, and repeatable
|
|
294
|
+
* Prevents subjective AI decisions
|
|
295
|
+
* Complements Design System + WCAG without overlap
|
|
296
|
+
|
|
297
|
+
---
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Flyee — AI Agent Framework
|
|
2
|
+
|
|
3
|
+
> Este arquivo é gerado automaticamente pelo installer `flyee`.
|
|
4
|
+
> Ele configura o comportamento do agente AI neste workspace.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Agent Framework
|
|
9
|
+
|
|
10
|
+
Este projeto utiliza o **Flyee Agent Framework** — um sistema de agentes especializados,
|
|
11
|
+
skills modulares e workflows automatizados para desenvolvimento assistido por IA.
|
|
12
|
+
|
|
13
|
+
### Estrutura
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
.agent/
|
|
17
|
+
├── agents/ ← 22 agentes especializados
|
|
18
|
+
├── skills/ ← 66+ skills modulares
|
|
19
|
+
├── workflows/ ← 45+ workflows automatizados
|
|
20
|
+
├── scripts/ ← Scripts de automação
|
|
21
|
+
└── flyee-bridge/ ← Sync com Flyee Platform (opcional)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Skill Loading Protocol
|
|
25
|
+
|
|
26
|
+
Ao receber uma tarefa:
|
|
27
|
+
1. Classificar o tipo de request (QUESTION, SIMPLE CODE, COMPLEX CODE, DESIGN/UI)
|
|
28
|
+
2. Selecionar o agente apropriado via `.agent/agents/`
|
|
29
|
+
3. Carregar skills relevantes via frontmatter do agente
|
|
30
|
+
4. Aplicar rules e gates obrigatórios
|
|
31
|
+
|
|
32
|
+
### Agent Routing
|
|
33
|
+
|
|
34
|
+
| Domínio | Agente |
|
|
35
|
+
|---------|--------|
|
|
36
|
+
| Web Frontend | `frontend-specialist` |
|
|
37
|
+
| Backend/API | `backend-specialist` |
|
|
38
|
+
| Mobile | `mobile-developer` |
|
|
39
|
+
| Security | `security-auditor` |
|
|
40
|
+
| Debugging | `debugger` |
|
|
41
|
+
| Planning | `project-planner` |
|
|
42
|
+
| Multi-task | `orchestrator` |
|
|
43
|
+
|
|
44
|
+
### Workflows Disponíveis
|
|
45
|
+
|
|
46
|
+
Use `/comando` para ativar workflows:
|
|
47
|
+
|
|
48
|
+
| Comando | Descrição |
|
|
49
|
+
|---------|-----------|
|
|
50
|
+
| `/new-task` | Adicionar feature com tracking |
|
|
51
|
+
| `/execute` | Executar tasks |
|
|
52
|
+
| `/task-complete` | Completar com verification gates |
|
|
53
|
+
| `/debug` | Debugging sistemático |
|
|
54
|
+
| `/test` | Gerar e rodar testes |
|
|
55
|
+
| `/plan` | Planejamento estratégico |
|
|
56
|
+
| `/deploy` | Deploy para produção |
|
|
57
|
+
|
|
58
|
+
### Flyee Platform (Opcional)
|
|
59
|
+
|
|
60
|
+
Se `flyee.json` existir na raiz, o agente sincroniza tarefas com a plataforma Flyee.
|
|
61
|
+
Sem `flyee.json`, tudo funciona offline com estado local em `.flyee/`.
|
|
62
|
+
|
|
63
|
+
### Rules
|
|
64
|
+
|
|
65
|
+
1. Responda no idioma do usuário
|
|
66
|
+
2. Código e comentários em inglês
|
|
67
|
+
3. Leia o agente antes de implementar
|
|
68
|
+
4. Siga os gates obrigatórios (Pre-Implementation, Verification)
|
|
69
|
+
5. Clean code: sem over-engineering, sem comentários desnecessários
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "flyee",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI Agent Framework — 21 specialist agents, 65+ skills, 40+ workflows. All runtimes.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Bruno Santana <bruno@flyee.dev>",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "https://github.com/BrunoSantanaDeveloper/flyee-agent.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://flyee.dev",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"ai",
|
|
14
|
+
"agent",
|
|
15
|
+
"coding-agent",
|
|
16
|
+
"ai-framework",
|
|
17
|
+
"multi-runtime",
|
|
18
|
+
"antigravity",
|
|
19
|
+
"claude",
|
|
20
|
+
"cursor",
|
|
21
|
+
"copilot",
|
|
22
|
+
"codex",
|
|
23
|
+
"windsurf",
|
|
24
|
+
"gemini"
|
|
25
|
+
],
|
|
26
|
+
"type": "module",
|
|
27
|
+
"bin": {
|
|
28
|
+
"flyee": "./bin/install.js"
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"bin/",
|
|
32
|
+
"core/",
|
|
33
|
+
"engine-files/",
|
|
34
|
+
"runtime-adapters/",
|
|
35
|
+
"bridge/",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"README.md"
|
|
38
|
+
],
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=18.0.0"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"test": "node --test test/",
|
|
44
|
+
"lint": "echo 'TODO: add linter'",
|
|
45
|
+
"dry-run": "node bin/install.js --dry-run"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* The canonical format IS the Antigravity format, so this adapter
|
|
5
|
+
* is mostly a pass-through. Paths use .agent/ which is the default.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'antigravity',
|
|
10
|
+
dirName: '.agent',
|
|
11
|
+
engineFile: 'GEMINI.md',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'{{AGENT_DIR}}': '.agent',
|
|
14
|
+
'{{GLOBAL_DIR}}': '~/.gemini/antigravity',
|
|
15
|
+
'{{ENGINE_FILE}}': 'GEMINI.md',
|
|
16
|
+
'{{BRIDGE_DIR}}': '.agent/flyee-bridge',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Convert canonical content to Antigravity format.
|
|
22
|
+
* Since canonical IS Antigravity, this is a no-op.
|
|
23
|
+
*/
|
|
24
|
+
export function convert(content, runtimeConfig) {
|
|
25
|
+
return content;
|
|
26
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts canonical (.agent/) content to Claude Code format (.claude/).
|
|
5
|
+
* Claude Code uses CLAUDE.md as engine file and different tool names.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'claude',
|
|
10
|
+
dirName: '.claude',
|
|
11
|
+
engineFile: 'CLAUDE.md',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'.agent/': '.claude/',
|
|
14
|
+
'.agent\\b': '.claude',
|
|
15
|
+
'GEMINI.md': 'CLAUDE.md',
|
|
16
|
+
'~/.gemini/antigravity': '~/.claude',
|
|
17
|
+
},
|
|
18
|
+
toolMap: {
|
|
19
|
+
'read_file': 'Read',
|
|
20
|
+
'write_file': 'Write',
|
|
21
|
+
'replace_file_content': 'Edit',
|
|
22
|
+
'multi_replace_file_content': 'MultiEdit',
|
|
23
|
+
'run_command': 'Bash',
|
|
24
|
+
'grep_search': 'Grep',
|
|
25
|
+
'list_dir': 'Glob',
|
|
26
|
+
'view_file': 'Read',
|
|
27
|
+
'search_web': 'WebSearch',
|
|
28
|
+
'google_web_search': 'WebSearch',
|
|
29
|
+
'run_shell_command': 'Bash',
|
|
30
|
+
'search_file_content': 'Grep',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Convert canonical content to Claude Code format.
|
|
36
|
+
*/
|
|
37
|
+
export function convert(content, runtimeConfig) {
|
|
38
|
+
let result = content;
|
|
39
|
+
|
|
40
|
+
// Replace paths
|
|
41
|
+
for (const [from, to] of Object.entries(config.pathMap)) {
|
|
42
|
+
result = result.replaceAll(from, to);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Replace tool names (only in code blocks and inline code)
|
|
46
|
+
for (const [from, to] of Object.entries(config.toolMap)) {
|
|
47
|
+
// Replace tool names that appear as identifiers (word boundaries)
|
|
48
|
+
const regex = new RegExp(`\\b${escapeRegex(from)}\\b`, 'g');
|
|
49
|
+
result = result.replace(regex, to);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function escapeRegex(str) {
|
|
56
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
57
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Codex Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts canonical (.agent/) content to Codex format (.codex/).
|
|
5
|
+
* Codex uses AGENTS.md as engine file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'codex',
|
|
10
|
+
dirName: '.codex',
|
|
11
|
+
engineFile: 'AGENTS.md',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'.agent/': '.codex/',
|
|
14
|
+
'.agent\\b': '.codex',
|
|
15
|
+
'GEMINI.md': 'AGENTS.md',
|
|
16
|
+
'~/.gemini/antigravity': '~/.codex',
|
|
17
|
+
},
|
|
18
|
+
toolMap: {
|
|
19
|
+
'read_file': 'read',
|
|
20
|
+
'write_file': 'write',
|
|
21
|
+
'replace_file_content': 'patch',
|
|
22
|
+
'multi_replace_file_content': 'patch',
|
|
23
|
+
'run_command': 'shell',
|
|
24
|
+
'grep_search': 'grep',
|
|
25
|
+
'list_dir': 'ls',
|
|
26
|
+
'view_file': 'read',
|
|
27
|
+
'search_web': 'web_search',
|
|
28
|
+
'google_web_search': 'web_search',
|
|
29
|
+
'run_shell_command': 'shell',
|
|
30
|
+
'search_file_content': 'grep',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export function convert(content, runtimeConfig) {
|
|
35
|
+
let result = content;
|
|
36
|
+
|
|
37
|
+
for (const [from, to] of Object.entries(config.pathMap)) {
|
|
38
|
+
result = result.replaceAll(from, to);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
for (const [from, to] of Object.entries(config.toolMap)) {
|
|
42
|
+
const regex = new RegExp(`\\b${escapeRegex(from)}\\b`, 'g');
|
|
43
|
+
result = result.replace(regex, to);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function escapeRegex(str) {
|
|
50
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts canonical (.agent/) content to Copilot format (.github/).
|
|
5
|
+
* Copilot uses .github/copilot-instructions.md as engine file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'copilot',
|
|
10
|
+
dirName: '.github',
|
|
11
|
+
engineFile: 'copilot-instructions.md',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'.agent/': '.github/',
|
|
14
|
+
'.agent\\b': '.github',
|
|
15
|
+
'GEMINI.md': '.github/copilot-instructions.md',
|
|
16
|
+
'~/.gemini/antigravity': '~/.config/github-copilot',
|
|
17
|
+
},
|
|
18
|
+
toolMap: {
|
|
19
|
+
'read_file': 'read',
|
|
20
|
+
'write_file': 'edit',
|
|
21
|
+
'replace_file_content': 'edit',
|
|
22
|
+
'multi_replace_file_content': 'edit',
|
|
23
|
+
'run_command': 'execute',
|
|
24
|
+
'grep_search': 'search',
|
|
25
|
+
'list_dir': 'list',
|
|
26
|
+
'view_file': 'read',
|
|
27
|
+
'search_web': 'search_web',
|
|
28
|
+
'google_web_search': 'search_web',
|
|
29
|
+
'run_shell_command': 'execute',
|
|
30
|
+
'search_file_content': 'search',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export function convert(content, runtimeConfig) {
|
|
35
|
+
let result = content;
|
|
36
|
+
|
|
37
|
+
for (const [from, to] of Object.entries(config.pathMap)) {
|
|
38
|
+
result = result.replaceAll(from, to);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
for (const [from, to] of Object.entries(config.toolMap)) {
|
|
42
|
+
const regex = new RegExp(`\\b${escapeRegex(from)}\\b`, 'g');
|
|
43
|
+
result = result.replace(regex, to);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function escapeRegex(str) {
|
|
50
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts canonical (.agent/) content to Cursor format (.cursor/).
|
|
5
|
+
* Cursor uses .cursorrules as engine file.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'cursor',
|
|
10
|
+
dirName: '.cursor',
|
|
11
|
+
engineFile: '.cursorrules',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'.agent/': '.cursor/',
|
|
14
|
+
'.agent\\b': '.cursor',
|
|
15
|
+
'GEMINI.md': '.cursorrules',
|
|
16
|
+
'~/.gemini/antigravity': '~/.cursor',
|
|
17
|
+
},
|
|
18
|
+
toolMap: {
|
|
19
|
+
'read_file': 'read_file',
|
|
20
|
+
'write_file': 'write_file',
|
|
21
|
+
'replace_file_content': 'StrReplace',
|
|
22
|
+
'multi_replace_file_content': 'StrReplace',
|
|
23
|
+
'run_command': 'Shell',
|
|
24
|
+
'grep_search': 'search',
|
|
25
|
+
'list_dir': 'list_dir',
|
|
26
|
+
'view_file': 'read_file',
|
|
27
|
+
'search_web': 'web_search',
|
|
28
|
+
'google_web_search': 'web_search',
|
|
29
|
+
'run_shell_command': 'Shell',
|
|
30
|
+
'search_file_content': 'search',
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export function convert(content, runtimeConfig) {
|
|
35
|
+
let result = content;
|
|
36
|
+
|
|
37
|
+
for (const [from, to] of Object.entries(config.pathMap)) {
|
|
38
|
+
result = result.replaceAll(from, to);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
for (const [from, to] of Object.entries(config.toolMap)) {
|
|
42
|
+
const regex = new RegExp(`\\b${escapeRegex(from)}\\b`, 'g');
|
|
43
|
+
result = result.replace(regex, to);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function escapeRegex(str) {
|
|
50
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
51
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI Runtime Adapter
|
|
3
|
+
*
|
|
4
|
+
* Converts canonical (.agent/) content to Gemini CLI format (.gemini/).
|
|
5
|
+
* Gemini CLI uses GEMINI.md as engine file (same as Antigravity).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export const config = {
|
|
9
|
+
name: 'gemini-cli',
|
|
10
|
+
dirName: '.gemini',
|
|
11
|
+
engineFile: 'GEMINI.md',
|
|
12
|
+
pathMap: {
|
|
13
|
+
'.agent/': '.gemini/',
|
|
14
|
+
'.agent\\b': '.gemini',
|
|
15
|
+
'~/.gemini/antigravity': '~/.gemini',
|
|
16
|
+
},
|
|
17
|
+
toolMap: {
|
|
18
|
+
// Gemini CLI tool names are same as Antigravity
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export function convert(content, runtimeConfig) {
|
|
23
|
+
let result = content;
|
|
24
|
+
|
|
25
|
+
for (const [from, to] of Object.entries(config.pathMap)) {
|
|
26
|
+
result = result.replaceAll(from, to);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return result;
|
|
30
|
+
}
|