@hivehub/rulebook 4.2.1 → 4.3.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/.claude/commands/continue.md +33 -33
- package/.claude/commands/ralph-config.md +112 -112
- package/.claude/commands/ralph-history.md +110 -110
- package/.claude/commands/ralph-init.md +72 -72
- package/.claude/commands/ralph-pause-resume.md +105 -105
- package/.claude/commands/ralph-run.md +101 -101
- package/.claude/commands/ralph-status.md +76 -76
- package/.claude/commands/rulebook-memory-save.md +48 -48
- package/.claude/commands/rulebook-memory-search.md +47 -47
- package/.claude/commands/rulebook-task-apply.md +67 -67
- package/.claude/commands/rulebook-task-archive.md +70 -70
- package/.claude/commands/rulebook-task-create.md +93 -93
- package/.claude/commands/rulebook-task-list.md +42 -42
- package/.claude/commands/rulebook-task-show.md +52 -52
- package/.claude/commands/rulebook-task-validate.md +53 -53
- package/.claude-plugin/marketplace.json +28 -28
- package/.claude-plugin/plugin.json +8 -8
- package/README.md +8 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +4 -4
- package/dist/cli/commands.js.map +1 -1
- package/dist/core/claude-mcp.d.ts +8 -1
- package/dist/core/claude-mcp.d.ts.map +1 -1
- package/dist/core/claude-mcp.js +32 -1
- package/dist/core/claude-mcp.js.map +1 -1
- package/dist/core/generator.d.ts +13 -0
- package/dist/core/generator.d.ts.map +1 -1
- package/dist/core/generator.js +283 -28
- package/dist/core/generator.js.map +1 -1
- package/dist/core/workspace/project-worker.d.ts.map +1 -1
- package/dist/core/workspace/project-worker.js +3 -0
- package/dist/core/workspace/project-worker.js.map +1 -1
- package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
- package/dist/core/workspace/workspace-manager.js +2 -6
- package/dist/core/workspace/workspace-manager.js.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +6 -5
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/package.json +21 -22
- package/templates/agents/accessibility-reviewer.md +43 -0
- package/templates/agents/api-designer.md +42 -0
- package/templates/agents/architect.md +51 -0
- package/templates/agents/build-engineer.md +36 -0
- package/templates/agents/code-reviewer.md +47 -0
- package/templates/agents/database-architect.md +41 -0
- package/templates/agents/devops-engineer.md +42 -0
- package/templates/agents/docs-writer.md +38 -0
- package/templates/agents/i18n-engineer.md +42 -0
- package/templates/agents/implementer.md +38 -35
- package/templates/agents/migration-engineer.md +42 -0
- package/templates/agents/performance-engineer.md +49 -0
- package/templates/agents/refactoring-agent.md +41 -0
- package/templates/agents/researcher.md +38 -34
- package/templates/agents/security-reviewer.md +40 -0
- package/templates/agents/team-lead.md +37 -34
- package/templates/agents/tester.md +45 -42
- package/templates/agents/ux-reviewer.md +43 -0
- package/templates/ci/rulebook-review.yml +26 -26
- package/templates/cli/AIDER.md +49 -49
- package/templates/cli/AMAZON_Q.md +25 -25
- package/templates/cli/AUGGIE.md +32 -32
- package/templates/cli/CLAUDE.md +117 -117
- package/templates/cli/CLINE.md +99 -99
- package/templates/cli/CODEBUDDY.md +20 -20
- package/templates/cli/CODEIUM.md +20 -20
- package/templates/cli/CODEX.md +21 -21
- package/templates/cli/CONTINUE.md +34 -34
- package/templates/cli/CURSOR_CLI.md +62 -62
- package/templates/cli/FACTORY.md +18 -18
- package/templates/cli/GEMINI.md +35 -35
- package/templates/cli/KILOCODE.md +18 -18
- package/templates/cli/OPENCODE.md +18 -18
- package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
- package/templates/commands/rulebook-memory-save.md +48 -48
- package/templates/commands/rulebook-memory-search.md +47 -47
- package/templates/commands/rulebook-task-apply.md +67 -67
- package/templates/commands/rulebook-task-archive.md +94 -94
- package/templates/commands/rulebook-task-create.md +93 -93
- package/templates/commands/rulebook-task-list.md +42 -42
- package/templates/commands/rulebook-task-show.md +52 -52
- package/templates/commands/rulebook-task-validate.md +53 -53
- package/templates/core/AGENTS_LEAN.md +25 -25
- package/templates/core/AGENTS_OVERRIDE.md +16 -16
- package/templates/core/AGENT_AUTOMATION.md +288 -288
- package/templates/core/DAG.md +304 -304
- package/templates/core/DOCUMENTATION_RULES.md +36 -36
- package/templates/core/MULTI_AGENT.md +74 -74
- package/templates/core/PLANS.md +28 -28
- package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
- package/templates/core/RALPH.md +471 -471
- package/templates/core/RULEBOOK.md +1935 -1935
- package/templates/frameworks/ANGULAR.md +36 -36
- package/templates/frameworks/DJANGO.md +83 -83
- package/templates/frameworks/ELECTRON.md +147 -147
- package/templates/frameworks/FLASK.md +38 -38
- package/templates/frameworks/FLUTTER.md +55 -55
- package/templates/frameworks/JQUERY.md +32 -32
- package/templates/frameworks/LARAVEL.md +38 -38
- package/templates/frameworks/NESTJS.md +43 -43
- package/templates/frameworks/NEXTJS.md +127 -127
- package/templates/frameworks/NUXT.md +40 -40
- package/templates/frameworks/RAILS.md +66 -66
- package/templates/frameworks/REACT.md +38 -38
- package/templates/frameworks/REACT_NATIVE.md +47 -47
- package/templates/frameworks/SPRING.md +39 -39
- package/templates/frameworks/SYMFONY.md +36 -36
- package/templates/frameworks/VUE.md +36 -36
- package/templates/frameworks/ZEND.md +35 -35
- package/templates/git/CI_CD_PATTERNS.md +661 -661
- package/templates/git/GITHUB_ACTIONS.md +728 -728
- package/templates/git/GITLAB_CI.md +730 -730
- package/templates/git/GIT_WORKFLOW.md +1157 -1157
- package/templates/git/SECRETS_MANAGEMENT.md +585 -585
- package/templates/hooks/COMMIT_MSG.md +530 -530
- package/templates/hooks/POST_CHECKOUT.md +546 -546
- package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
- package/templates/hooks/PRE_COMMIT.md +414 -414
- package/templates/hooks/PRE_PUSH.md +601 -601
- package/templates/ides/CONTINUE_RULES.md +16 -16
- package/templates/ides/COPILOT.md +37 -37
- package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
- package/templates/ides/CURSOR.md +43 -43
- package/templates/ides/GEMINI_RULES.md +17 -17
- package/templates/ides/JETBRAINS_AI.md +35 -35
- package/templates/ides/REPLIT.md +36 -36
- package/templates/ides/TABNINE.md +29 -29
- package/templates/ides/VSCODE.md +40 -40
- package/templates/ides/WINDSURF.md +36 -36
- package/templates/ides/WINDSURF_RULES.md +14 -14
- package/templates/ides/ZED.md +32 -32
- package/templates/ides/cursor-mdc/go.mdc +24 -24
- package/templates/ides/cursor-mdc/python.mdc +24 -24
- package/templates/ides/cursor-mdc/quality.mdc +25 -25
- package/templates/ides/cursor-mdc/ralph.mdc +39 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
- package/templates/ides/cursor-mdc/rust.mdc +24 -24
- package/templates/ides/cursor-mdc/typescript.mdc +25 -25
- package/templates/languages/C.md +333 -333
- package/templates/languages/CPP.md +743 -743
- package/templates/languages/CSHARP.md +417 -417
- package/templates/languages/ELIXIR.md +454 -454
- package/templates/languages/ERLANG.md +361 -361
- package/templates/languages/GO.md +645 -645
- package/templates/languages/HASKELL.md +177 -177
- package/templates/languages/JAVA.md +607 -607
- package/templates/languages/JAVASCRIPT.md +631 -631
- package/templates/languages/JULIA.md +97 -97
- package/templates/languages/KOTLIN.md +511 -511
- package/templates/languages/LISP.md +100 -100
- package/templates/languages/LUA.md +74 -74
- package/templates/languages/OBJECTIVEC.md +90 -90
- package/templates/languages/PHP.md +416 -416
- package/templates/languages/PYTHON.md +682 -682
- package/templates/languages/RUBY.md +421 -421
- package/templates/languages/RUST.md +477 -477
- package/templates/languages/SAS.md +73 -73
- package/templates/languages/SCALA.md +348 -348
- package/templates/languages/SOLIDITY.md +580 -580
- package/templates/languages/SQL.md +137 -137
- package/templates/languages/SWIFT.md +466 -466
- package/templates/languages/TYPESCRIPT.md +591 -591
- package/templates/languages/ZIG.md +265 -265
- package/templates/modules/ATLASSIAN.md +255 -255
- package/templates/modules/CONTEXT7.md +54 -54
- package/templates/modules/FIGMA.md +267 -267
- package/templates/modules/GITHUB_MCP.md +64 -64
- package/templates/modules/GRAFANA.md +328 -328
- package/templates/modules/MEMORY.md +126 -126
- package/templates/modules/NOTION.md +247 -247
- package/templates/modules/PLAYWRIGHT.md +90 -90
- package/templates/modules/RULEBOOK_MCP.md +156 -156
- package/templates/modules/SERENA.md +337 -337
- package/templates/modules/SUPABASE.md +223 -223
- package/templates/modules/SYNAP.md +69 -69
- package/templates/modules/VECTORIZER.md +63 -63
- package/templates/modules/sequential-thinking.md +42 -42
- package/templates/ralph/ralph-history.bat +4 -4
- package/templates/ralph/ralph-history.sh +5 -5
- package/templates/ralph/ralph-init.bat +5 -5
- package/templates/ralph/ralph-init.sh +5 -5
- package/templates/ralph/ralph-pause.bat +5 -5
- package/templates/ralph/ralph-pause.sh +5 -5
- package/templates/ralph/ralph-run.bat +5 -5
- package/templates/ralph/ralph-run.sh +5 -5
- package/templates/ralph/ralph-status.bat +4 -4
- package/templates/ralph/ralph-status.sh +5 -5
- package/templates/services/AZURE_BLOB.md +184 -184
- package/templates/services/CASSANDRA.md +239 -239
- package/templates/services/DATADOG.md +26 -26
- package/templates/services/DOCKER.md +124 -124
- package/templates/services/DOCKER_COMPOSE.md +168 -168
- package/templates/services/DYNAMODB.md +308 -308
- package/templates/services/ELASTICSEARCH.md +347 -347
- package/templates/services/GCS.md +178 -178
- package/templates/services/HELM.md +194 -194
- package/templates/services/INFLUXDB.md +265 -265
- package/templates/services/KAFKA.md +341 -341
- package/templates/services/KUBERNETES.md +208 -208
- package/templates/services/MARIADB.md +183 -183
- package/templates/services/MEMCACHED.md +242 -242
- package/templates/services/MINIO.md +201 -201
- package/templates/services/MONGODB.md +268 -268
- package/templates/services/MYSQL.md +358 -358
- package/templates/services/NEO4J.md +247 -247
- package/templates/services/OPENTELEMETRY.md +25 -25
- package/templates/services/ORACLE.md +290 -290
- package/templates/services/PINO.md +24 -24
- package/templates/services/POSTGRESQL.md +326 -326
- package/templates/services/PROMETHEUS.md +33 -33
- package/templates/services/RABBITMQ.md +286 -286
- package/templates/services/REDIS.md +292 -292
- package/templates/services/S3.md +298 -298
- package/templates/services/SENTRY.md +23 -23
- package/templates/services/SQLITE.md +294 -294
- package/templates/services/SQLSERVER.md +294 -294
- package/templates/services/WINSTON.md +30 -30
- package/templates/skills/cli/aider/SKILL.md +59 -59
- package/templates/skills/cli/amazon-q/SKILL.md +35 -35
- package/templates/skills/cli/auggie/SKILL.md +42 -42
- package/templates/skills/cli/claude/SKILL.md +42 -42
- package/templates/skills/cli/cline/SKILL.md +42 -42
- package/templates/skills/cli/codebuddy/SKILL.md +30 -30
- package/templates/skills/cli/codeium/SKILL.md +30 -30
- package/templates/skills/cli/codex/SKILL.md +31 -31
- package/templates/skills/cli/continue/SKILL.md +44 -44
- package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
- package/templates/skills/cli/factory/SKILL.md +28 -28
- package/templates/skills/cli/gemini/SKILL.md +45 -45
- package/templates/skills/cli/kilocode/SKILL.md +28 -28
- package/templates/skills/cli/opencode/SKILL.md +28 -28
- package/templates/skills/core/agent-automation/SKILL.md +194 -194
- package/templates/skills/core/dag/SKILL.md +314 -314
- package/templates/skills/core/documentation-rules/SKILL.md +46 -46
- package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
- package/templates/skills/core/rulebook/SKILL.md +176 -176
- package/templates/skills/dev/accessibility/SKILL.md +17 -0
- package/templates/skills/dev/api-design/SKILL.md +15 -0
- package/templates/skills/dev/architect/SKILL.md +17 -0
- package/templates/skills/dev/build-fix/SKILL.md +17 -0
- package/templates/skills/dev/db-design/SKILL.md +15 -0
- package/templates/skills/dev/debug/SKILL.md +16 -0
- package/templates/skills/dev/deploy/SKILL.md +17 -0
- package/templates/skills/dev/docs/SKILL.md +17 -0
- package/templates/skills/dev/migrate/SKILL.md +15 -0
- package/templates/skills/dev/perf/SKILL.md +17 -0
- package/templates/skills/dev/refactor/SKILL.md +17 -0
- package/templates/skills/dev/research/SKILL.md +14 -0
- package/templates/skills/dev/review/SKILL.md +18 -0
- package/templates/skills/dev/security-audit/SKILL.md +17 -0
- package/templates/skills/frameworks/angular/SKILL.md +46 -46
- package/templates/skills/frameworks/django/SKILL.md +93 -93
- package/templates/skills/frameworks/electron/SKILL.md +157 -157
- package/templates/skills/frameworks/flask/SKILL.md +48 -48
- package/templates/skills/frameworks/flutter/SKILL.md +65 -65
- package/templates/skills/frameworks/jquery/SKILL.md +42 -42
- package/templates/skills/frameworks/laravel/SKILL.md +48 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
- package/templates/skills/frameworks/rails/SKILL.md +76 -76
- package/templates/skills/frameworks/react/SKILL.md +48 -48
- package/templates/skills/frameworks/react-native/SKILL.md +57 -57
- package/templates/skills/frameworks/spring/SKILL.md +49 -49
- package/templates/skills/frameworks/symfony/SKILL.md +46 -46
- package/templates/skills/frameworks/vue/SKILL.md +46 -46
- package/templates/skills/frameworks/zend/SKILL.md +45 -45
- package/templates/skills/ides/copilot/SKILL.md +47 -47
- package/templates/skills/ides/cursor/SKILL.md +53 -53
- package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
- package/templates/skills/ides/replit/SKILL.md +46 -46
- package/templates/skills/ides/tabnine/SKILL.md +39 -39
- package/templates/skills/ides/vscode/SKILL.md +50 -50
- package/templates/skills/ides/windsurf/SKILL.md +46 -46
- package/templates/skills/ides/zed/SKILL.md +42 -42
- package/templates/skills/languages/c/SKILL.md +343 -343
- package/templates/skills/languages/cpp/SKILL.md +753 -753
- package/templates/skills/languages/csharp/SKILL.md +427 -427
- package/templates/skills/languages/elixir/SKILL.md +464 -464
- package/templates/skills/languages/erlang/SKILL.md +371 -371
- package/templates/skills/languages/go/SKILL.md +655 -655
- package/templates/skills/languages/haskell/SKILL.md +187 -187
- package/templates/skills/languages/java/SKILL.md +617 -617
- package/templates/skills/languages/javascript/SKILL.md +641 -641
- package/templates/skills/languages/julia/SKILL.md +107 -107
- package/templates/skills/languages/kotlin/SKILL.md +521 -521
- package/templates/skills/languages/lisp/SKILL.md +110 -110
- package/templates/skills/languages/lua/SKILL.md +84 -84
- package/templates/skills/languages/objectivec/SKILL.md +100 -100
- package/templates/skills/languages/php/SKILL.md +426 -426
- package/templates/skills/languages/python/SKILL.md +692 -692
- package/templates/skills/languages/ruby/SKILL.md +431 -431
- package/templates/skills/languages/rust/SKILL.md +487 -487
- package/templates/skills/languages/sas/SKILL.md +83 -83
- package/templates/skills/languages/scala/SKILL.md +358 -358
- package/templates/skills/languages/solidity/SKILL.md +590 -590
- package/templates/skills/languages/sql/SKILL.md +147 -147
- package/templates/skills/languages/swift/SKILL.md +476 -476
- package/templates/skills/languages/typescript/SKILL.md +302 -302
- package/templates/skills/languages/zig/SKILL.md +275 -275
- package/templates/skills/modules/atlassian/SKILL.md +265 -265
- package/templates/skills/modules/context7/SKILL.md +64 -64
- package/templates/skills/modules/figma/SKILL.md +277 -277
- package/templates/skills/modules/github-mcp/SKILL.md +74 -74
- package/templates/skills/modules/grafana/SKILL.md +338 -338
- package/templates/skills/modules/memory/SKILL.md +73 -73
- package/templates/skills/modules/notion/SKILL.md +257 -257
- package/templates/skills/modules/playwright/SKILL.md +100 -100
- package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
- package/templates/skills/modules/serena/SKILL.md +347 -347
- package/templates/skills/modules/supabase/SKILL.md +233 -233
- package/templates/skills/modules/synap/SKILL.md +79 -79
- package/templates/skills/modules/vectorizer/SKILL.md +73 -73
- package/templates/skills/services/azure-blob/SKILL.md +194 -194
- package/templates/skills/services/cassandra/SKILL.md +249 -249
- package/templates/skills/services/dynamodb/SKILL.md +318 -318
- package/templates/skills/services/elasticsearch/SKILL.md +357 -357
- package/templates/skills/services/gcs/SKILL.md +188 -188
- package/templates/skills/services/influxdb/SKILL.md +275 -275
- package/templates/skills/services/kafka/SKILL.md +351 -351
- package/templates/skills/services/mariadb/SKILL.md +193 -193
- package/templates/skills/services/memcached/SKILL.md +252 -252
- package/templates/skills/services/minio/SKILL.md +211 -211
- package/templates/skills/services/mongodb/SKILL.md +278 -278
- package/templates/skills/services/mysql/SKILL.md +368 -368
- package/templates/skills/services/neo4j/SKILL.md +257 -257
- package/templates/skills/services/oracle/SKILL.md +300 -300
- package/templates/skills/services/postgresql/SKILL.md +336 -336
- package/templates/skills/services/rabbitmq/SKILL.md +296 -296
- package/templates/skills/services/redis/SKILL.md +302 -302
- package/templates/skills/services/s3/SKILL.md +308 -308
- package/templates/skills/services/sqlite/SKILL.md +304 -304
- package/templates/skills/services/sqlserver/SKILL.md +304 -304
- package/templates/skills/workflows/ralph/SKILL.md +309 -309
- package/templates/skills/workflows/ralph/install.sh +87 -87
- package/templates/skills/workflows/ralph/manifest.json +158 -158
|
@@ -1,267 +1,267 @@
|
|
|
1
|
-
<!-- FIGMA:START -->
|
|
2
|
-
# Figma MCP Instructions
|
|
3
|
-
|
|
4
|
-
**CRITICAL**: Use MCP Figma for design system integration, asset export, and design-to-code workflows.
|
|
5
|
-
|
|
6
|
-
## Core Operations
|
|
7
|
-
|
|
8
|
-
### File Operations
|
|
9
|
-
```typescript
|
|
10
|
-
// Get file
|
|
11
|
-
figma.getFile({ file_key: 'file-key' })
|
|
12
|
-
|
|
13
|
-
// Get file nodes
|
|
14
|
-
figma.getFileNodes({
|
|
15
|
-
file_key: 'file-key',
|
|
16
|
-
ids: ['node-id-1', 'node-id-2']
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
// Get file versions
|
|
20
|
-
figma.getFileVersions({ file_key: 'file-key' })
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Image Export
|
|
24
|
-
```typescript
|
|
25
|
-
// Export images
|
|
26
|
-
figma.getImage({
|
|
27
|
-
file_key: 'file-key',
|
|
28
|
-
ids: 'node-id',
|
|
29
|
-
format: 'png', // png, jpg, svg, pdf
|
|
30
|
-
scale: 2 // @2x resolution
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
// Export multiple
|
|
34
|
-
figma.getImage({
|
|
35
|
-
file_key: 'file-key',
|
|
36
|
-
ids: 'node-1,node-2,node-3',
|
|
37
|
-
format: 'svg',
|
|
38
|
-
svg_outline_text: true
|
|
39
|
-
})
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Components
|
|
43
|
-
```typescript
|
|
44
|
-
// Get components
|
|
45
|
-
figma.getFileComponents({ file_key: 'file-key' })
|
|
46
|
-
|
|
47
|
-
// Get component sets
|
|
48
|
-
figma.getFileComponentSets({ file_key: 'file-key' })
|
|
49
|
-
|
|
50
|
-
// Get team components
|
|
51
|
-
figma.getTeamComponents({ team_id: 'team-id' })
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Styles
|
|
55
|
-
```typescript
|
|
56
|
-
// Get file styles
|
|
57
|
-
figma.getFileStyles({ file_key: 'file-key' })
|
|
58
|
-
|
|
59
|
-
// Get team styles
|
|
60
|
-
figma.getTeamStyles({ team_id: 'team-id' })
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Comments
|
|
64
|
-
```typescript
|
|
65
|
-
// Get comments
|
|
66
|
-
figma.getComments({ file_key: 'file-key' })
|
|
67
|
-
|
|
68
|
-
// Post comment
|
|
69
|
-
figma.postComment({
|
|
70
|
-
file_key: 'file-key',
|
|
71
|
-
message: 'Approved for development',
|
|
72
|
-
comment_id: 'parent-comment-id' // For replies
|
|
73
|
-
})
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Common Patterns
|
|
77
|
-
|
|
78
|
-
### Design Token Export
|
|
79
|
-
```typescript
|
|
80
|
-
// Export design tokens from Figma styles
|
|
81
|
-
const { data: { styles } } = await figma.getFileStyles({ file_key: fileKey })
|
|
82
|
-
|
|
83
|
-
const tokens = {
|
|
84
|
-
colors: {},
|
|
85
|
-
typography: {},
|
|
86
|
-
spacing: {}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
for (const style of Object.values(styles)) {
|
|
90
|
-
if (style.style_type === 'FILL') {
|
|
91
|
-
tokens.colors[style.name] = extractColor(style)
|
|
92
|
-
} else if (style.style_type === 'TEXT') {
|
|
93
|
-
tokens.typography[style.name] = extractTextStyle(style)
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Write to tokens.json
|
|
98
|
-
fs.writeFileSync('tokens.json', JSON.stringify(tokens, null, 2))
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Component Sync
|
|
102
|
-
```typescript
|
|
103
|
-
// Sync Figma components to code
|
|
104
|
-
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
|
|
105
|
-
|
|
106
|
-
for (const component of Object.values(components)) {
|
|
107
|
-
// Export component as SVG
|
|
108
|
-
const { data: images } = await figma.getImage({
|
|
109
|
-
file_key: fileKey,
|
|
110
|
-
ids: component.node_id,
|
|
111
|
-
format: 'svg'
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
// Save to assets folder
|
|
115
|
-
const svg = await fetch(images[component.node_id]).then(r => r.text())
|
|
116
|
-
fs.writeFileSync(`assets/icons/${component.name}.svg`, svg)
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
### Screenshot Generation
|
|
121
|
-
```typescript
|
|
122
|
-
// Generate screenshots for documentation
|
|
123
|
-
const screens = ['home-screen', 'login-screen', 'dashboard']
|
|
124
|
-
|
|
125
|
-
for (const screenId of screens) {
|
|
126
|
-
const { data: images } = await figma.getImage({
|
|
127
|
-
file_key: fileKey,
|
|
128
|
-
ids: screenId,
|
|
129
|
-
format: 'png',
|
|
130
|
-
scale: 2
|
|
131
|
-
})
|
|
132
|
-
|
|
133
|
-
const imageUrl = images[screenId]
|
|
134
|
-
const response = await fetch(imageUrl)
|
|
135
|
-
const buffer = await response.buffer()
|
|
136
|
-
|
|
137
|
-
fs.writeFileSync(`docs/screenshots/${screenId}.png`, buffer)
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Design Review Automation
|
|
142
|
-
```typescript
|
|
143
|
-
// Check for new comments
|
|
144
|
-
const { data: comments } = await figma.getComments({ file_key: fileKey })
|
|
145
|
-
|
|
146
|
-
const unresolved = comments.filter(c => !c.resolved_at)
|
|
147
|
-
|
|
148
|
-
if (unresolved.length > 0) {
|
|
149
|
-
console.log(`${unresolved.length} unresolved design comments`)
|
|
150
|
-
|
|
151
|
-
// Create Jira issues for unresolved comments
|
|
152
|
-
for (const comment of unresolved) {
|
|
153
|
-
await jira.issues.createIssue({
|
|
154
|
-
fields: {
|
|
155
|
-
project: { key: 'DESIGN' },
|
|
156
|
-
summary: `Design feedback: ${comment.message.substring(0, 50)}`,
|
|
157
|
-
description: comment.message,
|
|
158
|
-
issuetype: { name: 'Task' }
|
|
159
|
-
}
|
|
160
|
-
})
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Design System Documentation
|
|
166
|
-
```typescript
|
|
167
|
-
// Generate component documentation
|
|
168
|
-
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
|
|
169
|
-
|
|
170
|
-
let markdown = '# Design System Components\n\n'
|
|
171
|
-
|
|
172
|
-
for (const [id, component] of Object.entries(components)) {
|
|
173
|
-
// Export thumbnail
|
|
174
|
-
const { data: images } = await figma.getImage({
|
|
175
|
-
file_key: fileKey,
|
|
176
|
-
ids: id,
|
|
177
|
-
format: 'png',
|
|
178
|
-
scale: 1
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
markdown += `## ${component.name}\n\n`
|
|
182
|
-
markdown += `\n\n`
|
|
183
|
-
markdown += `**Description:** ${component.description || 'No description'}\n\n`
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
fs.writeFileSync('docs/design-system.md', markdown)
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## Best Practices
|
|
190
|
-
|
|
191
|
-
✅ **DO:**
|
|
192
|
-
- Cache file data to reduce API calls
|
|
193
|
-
- Use version history for tracking changes
|
|
194
|
-
- Export assets at appropriate resolutions
|
|
195
|
-
- Document component usage
|
|
196
|
-
- Use meaningful component names
|
|
197
|
-
- Keep design tokens in sync
|
|
198
|
-
- Handle rate limits (requests/minute)
|
|
199
|
-
|
|
200
|
-
❌ **DON'T:**
|
|
201
|
-
- Export entire files repeatedly
|
|
202
|
-
- Ignore version control
|
|
203
|
-
- Hardcode file keys
|
|
204
|
-
- Skip error handling
|
|
205
|
-
- Export at wrong resolutions
|
|
206
|
-
- Commit API tokens
|
|
207
|
-
|
|
208
|
-
## Configuration
|
|
209
|
-
|
|
210
|
-
```json
|
|
211
|
-
{
|
|
212
|
-
"mcpServers": {
|
|
213
|
-
"figma": {
|
|
214
|
-
"command": "npx",
|
|
215
|
-
"args": ["-y", "@modelcontextprotocol/server-figma"],
|
|
216
|
-
"env": {
|
|
217
|
-
"FIGMA_ACCESS_TOKEN": "your-personal-access-token"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
**Setup:**
|
|
225
|
-
1. Generate personal access token: Account Settings → Personal Access Tokens
|
|
226
|
-
2. Grant appropriate scopes (file content, comments)
|
|
227
|
-
3. Store token securely
|
|
228
|
-
|
|
229
|
-
## Integration Patterns
|
|
230
|
-
|
|
231
|
-
### CI/CD Asset Pipeline
|
|
232
|
-
```bash
|
|
233
|
-
# Export icons on every design update
|
|
234
|
-
figma-export --file-key=$FIGMA_FILE --format=svg --output=src/assets/icons
|
|
235
|
-
|
|
236
|
-
# Optimize SVGs
|
|
237
|
-
svgo --folder src/assets/icons
|
|
238
|
-
|
|
239
|
-
# Commit if changes detected
|
|
240
|
-
git diff --quiet src/assets/icons || git commit -m "chore: Update design assets"
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
### Design-to-Code Workflow
|
|
244
|
-
```typescript
|
|
245
|
-
// 1. Detect design changes
|
|
246
|
-
const currentVersion = await figma.getFile({ file_key: fileKey })
|
|
247
|
-
const lastVersion = loadLastProcessedVersion()
|
|
248
|
-
|
|
249
|
-
if (currentVersion.version !== lastVersion) {
|
|
250
|
-
// 2. Export updated components
|
|
251
|
-
await exportComponents(fileKey)
|
|
252
|
-
|
|
253
|
-
// 3. Generate code
|
|
254
|
-
await generateComponentCode()
|
|
255
|
-
|
|
256
|
-
// 4. Run tests
|
|
257
|
-
await runVisualRegressionTests()
|
|
258
|
-
|
|
259
|
-
// 5. Create PR if tests pass
|
|
260
|
-
if (testsPass) {
|
|
261
|
-
await createPullRequest('Update components from Figma')
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
<!-- FIGMA:END -->
|
|
267
|
-
|
|
1
|
+
<!-- FIGMA:START -->
|
|
2
|
+
# Figma MCP Instructions
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Use MCP Figma for design system integration, asset export, and design-to-code workflows.
|
|
5
|
+
|
|
6
|
+
## Core Operations
|
|
7
|
+
|
|
8
|
+
### File Operations
|
|
9
|
+
```typescript
|
|
10
|
+
// Get file
|
|
11
|
+
figma.getFile({ file_key: 'file-key' })
|
|
12
|
+
|
|
13
|
+
// Get file nodes
|
|
14
|
+
figma.getFileNodes({
|
|
15
|
+
file_key: 'file-key',
|
|
16
|
+
ids: ['node-id-1', 'node-id-2']
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
// Get file versions
|
|
20
|
+
figma.getFileVersions({ file_key: 'file-key' })
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Image Export
|
|
24
|
+
```typescript
|
|
25
|
+
// Export images
|
|
26
|
+
figma.getImage({
|
|
27
|
+
file_key: 'file-key',
|
|
28
|
+
ids: 'node-id',
|
|
29
|
+
format: 'png', // png, jpg, svg, pdf
|
|
30
|
+
scale: 2 // @2x resolution
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
// Export multiple
|
|
34
|
+
figma.getImage({
|
|
35
|
+
file_key: 'file-key',
|
|
36
|
+
ids: 'node-1,node-2,node-3',
|
|
37
|
+
format: 'svg',
|
|
38
|
+
svg_outline_text: true
|
|
39
|
+
})
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Components
|
|
43
|
+
```typescript
|
|
44
|
+
// Get components
|
|
45
|
+
figma.getFileComponents({ file_key: 'file-key' })
|
|
46
|
+
|
|
47
|
+
// Get component sets
|
|
48
|
+
figma.getFileComponentSets({ file_key: 'file-key' })
|
|
49
|
+
|
|
50
|
+
// Get team components
|
|
51
|
+
figma.getTeamComponents({ team_id: 'team-id' })
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Styles
|
|
55
|
+
```typescript
|
|
56
|
+
// Get file styles
|
|
57
|
+
figma.getFileStyles({ file_key: 'file-key' })
|
|
58
|
+
|
|
59
|
+
// Get team styles
|
|
60
|
+
figma.getTeamStyles({ team_id: 'team-id' })
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Comments
|
|
64
|
+
```typescript
|
|
65
|
+
// Get comments
|
|
66
|
+
figma.getComments({ file_key: 'file-key' })
|
|
67
|
+
|
|
68
|
+
// Post comment
|
|
69
|
+
figma.postComment({
|
|
70
|
+
file_key: 'file-key',
|
|
71
|
+
message: 'Approved for development',
|
|
72
|
+
comment_id: 'parent-comment-id' // For replies
|
|
73
|
+
})
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Common Patterns
|
|
77
|
+
|
|
78
|
+
### Design Token Export
|
|
79
|
+
```typescript
|
|
80
|
+
// Export design tokens from Figma styles
|
|
81
|
+
const { data: { styles } } = await figma.getFileStyles({ file_key: fileKey })
|
|
82
|
+
|
|
83
|
+
const tokens = {
|
|
84
|
+
colors: {},
|
|
85
|
+
typography: {},
|
|
86
|
+
spacing: {}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
for (const style of Object.values(styles)) {
|
|
90
|
+
if (style.style_type === 'FILL') {
|
|
91
|
+
tokens.colors[style.name] = extractColor(style)
|
|
92
|
+
} else if (style.style_type === 'TEXT') {
|
|
93
|
+
tokens.typography[style.name] = extractTextStyle(style)
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Write to tokens.json
|
|
98
|
+
fs.writeFileSync('tokens.json', JSON.stringify(tokens, null, 2))
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Component Sync
|
|
102
|
+
```typescript
|
|
103
|
+
// Sync Figma components to code
|
|
104
|
+
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
|
|
105
|
+
|
|
106
|
+
for (const component of Object.values(components)) {
|
|
107
|
+
// Export component as SVG
|
|
108
|
+
const { data: images } = await figma.getImage({
|
|
109
|
+
file_key: fileKey,
|
|
110
|
+
ids: component.node_id,
|
|
111
|
+
format: 'svg'
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
// Save to assets folder
|
|
115
|
+
const svg = await fetch(images[component.node_id]).then(r => r.text())
|
|
116
|
+
fs.writeFileSync(`assets/icons/${component.name}.svg`, svg)
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### Screenshot Generation
|
|
121
|
+
```typescript
|
|
122
|
+
// Generate screenshots for documentation
|
|
123
|
+
const screens = ['home-screen', 'login-screen', 'dashboard']
|
|
124
|
+
|
|
125
|
+
for (const screenId of screens) {
|
|
126
|
+
const { data: images } = await figma.getImage({
|
|
127
|
+
file_key: fileKey,
|
|
128
|
+
ids: screenId,
|
|
129
|
+
format: 'png',
|
|
130
|
+
scale: 2
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
const imageUrl = images[screenId]
|
|
134
|
+
const response = await fetch(imageUrl)
|
|
135
|
+
const buffer = await response.buffer()
|
|
136
|
+
|
|
137
|
+
fs.writeFileSync(`docs/screenshots/${screenId}.png`, buffer)
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Design Review Automation
|
|
142
|
+
```typescript
|
|
143
|
+
// Check for new comments
|
|
144
|
+
const { data: comments } = await figma.getComments({ file_key: fileKey })
|
|
145
|
+
|
|
146
|
+
const unresolved = comments.filter(c => !c.resolved_at)
|
|
147
|
+
|
|
148
|
+
if (unresolved.length > 0) {
|
|
149
|
+
console.log(`${unresolved.length} unresolved design comments`)
|
|
150
|
+
|
|
151
|
+
// Create Jira issues for unresolved comments
|
|
152
|
+
for (const comment of unresolved) {
|
|
153
|
+
await jira.issues.createIssue({
|
|
154
|
+
fields: {
|
|
155
|
+
project: { key: 'DESIGN' },
|
|
156
|
+
summary: `Design feedback: ${comment.message.substring(0, 50)}`,
|
|
157
|
+
description: comment.message,
|
|
158
|
+
issuetype: { name: 'Task' }
|
|
159
|
+
}
|
|
160
|
+
})
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Design System Documentation
|
|
166
|
+
```typescript
|
|
167
|
+
// Generate component documentation
|
|
168
|
+
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
|
|
169
|
+
|
|
170
|
+
let markdown = '# Design System Components\n\n'
|
|
171
|
+
|
|
172
|
+
for (const [id, component] of Object.entries(components)) {
|
|
173
|
+
// Export thumbnail
|
|
174
|
+
const { data: images } = await figma.getImage({
|
|
175
|
+
file_key: fileKey,
|
|
176
|
+
ids: id,
|
|
177
|
+
format: 'png',
|
|
178
|
+
scale: 1
|
|
179
|
+
})
|
|
180
|
+
|
|
181
|
+
markdown += `## ${component.name}\n\n`
|
|
182
|
+
markdown += `\n\n`
|
|
183
|
+
markdown += `**Description:** ${component.description || 'No description'}\n\n`
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
fs.writeFileSync('docs/design-system.md', markdown)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Best Practices
|
|
190
|
+
|
|
191
|
+
✅ **DO:**
|
|
192
|
+
- Cache file data to reduce API calls
|
|
193
|
+
- Use version history for tracking changes
|
|
194
|
+
- Export assets at appropriate resolutions
|
|
195
|
+
- Document component usage
|
|
196
|
+
- Use meaningful component names
|
|
197
|
+
- Keep design tokens in sync
|
|
198
|
+
- Handle rate limits (requests/minute)
|
|
199
|
+
|
|
200
|
+
❌ **DON'T:**
|
|
201
|
+
- Export entire files repeatedly
|
|
202
|
+
- Ignore version control
|
|
203
|
+
- Hardcode file keys
|
|
204
|
+
- Skip error handling
|
|
205
|
+
- Export at wrong resolutions
|
|
206
|
+
- Commit API tokens
|
|
207
|
+
|
|
208
|
+
## Configuration
|
|
209
|
+
|
|
210
|
+
```json
|
|
211
|
+
{
|
|
212
|
+
"mcpServers": {
|
|
213
|
+
"figma": {
|
|
214
|
+
"command": "npx",
|
|
215
|
+
"args": ["-y", "@modelcontextprotocol/server-figma"],
|
|
216
|
+
"env": {
|
|
217
|
+
"FIGMA_ACCESS_TOKEN": "your-personal-access-token"
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Setup:**
|
|
225
|
+
1. Generate personal access token: Account Settings → Personal Access Tokens
|
|
226
|
+
2. Grant appropriate scopes (file content, comments)
|
|
227
|
+
3. Store token securely
|
|
228
|
+
|
|
229
|
+
## Integration Patterns
|
|
230
|
+
|
|
231
|
+
### CI/CD Asset Pipeline
|
|
232
|
+
```bash
|
|
233
|
+
# Export icons on every design update
|
|
234
|
+
figma-export --file-key=$FIGMA_FILE --format=svg --output=src/assets/icons
|
|
235
|
+
|
|
236
|
+
# Optimize SVGs
|
|
237
|
+
svgo --folder src/assets/icons
|
|
238
|
+
|
|
239
|
+
# Commit if changes detected
|
|
240
|
+
git diff --quiet src/assets/icons || git commit -m "chore: Update design assets"
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Design-to-Code Workflow
|
|
244
|
+
```typescript
|
|
245
|
+
// 1. Detect design changes
|
|
246
|
+
const currentVersion = await figma.getFile({ file_key: fileKey })
|
|
247
|
+
const lastVersion = loadLastProcessedVersion()
|
|
248
|
+
|
|
249
|
+
if (currentVersion.version !== lastVersion) {
|
|
250
|
+
// 2. Export updated components
|
|
251
|
+
await exportComponents(fileKey)
|
|
252
|
+
|
|
253
|
+
// 3. Generate code
|
|
254
|
+
await generateComponentCode()
|
|
255
|
+
|
|
256
|
+
// 4. Run tests
|
|
257
|
+
await runVisualRegressionTests()
|
|
258
|
+
|
|
259
|
+
// 5. Create PR if tests pass
|
|
260
|
+
if (testsPass) {
|
|
261
|
+
await createPullRequest('Update components from Figma')
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
<!-- FIGMA:END -->
|
|
267
|
+
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
<!-- GITHUB_MCP:START -->
|
|
2
|
-
# GitHub MCP Server Integration
|
|
3
|
-
|
|
4
|
-
**CRITICAL**: Monitor CI/CD workflows after every `git push` using GitHub MCP.
|
|
5
|
-
|
|
6
|
-
## Workflow After Push
|
|
7
|
-
|
|
8
|
-
```
|
|
9
|
-
1. Push changes
|
|
10
|
-
2. Wait 10 seconds
|
|
11
|
-
3. Check workflow status via GitHub MCP
|
|
12
|
-
4. If workflows running → check again in next interaction
|
|
13
|
-
5. If workflows failed → fetch logs, analyze, fix
|
|
14
|
-
6. If workflows passed → confirm to user
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Error Recovery
|
|
18
|
-
|
|
19
|
-
**When CI/CD fails:**
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
1. Fetch error information (workflow, job, step, logs)
|
|
23
|
-
2. Analyze against AGENTS.md standards
|
|
24
|
-
3. Propose fix
|
|
25
|
-
4. Implement fix with full quality checks
|
|
26
|
-
5. Commit and provide push command
|
|
27
|
-
6. Monitor workflows again
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Best Practices
|
|
31
|
-
|
|
32
|
-
✅ **DO:**
|
|
33
|
-
- Always check workflows after push
|
|
34
|
-
- Fetch complete error logs on failures
|
|
35
|
-
- Fix issues before next feature
|
|
36
|
-
- Verify fixes locally before re-pushing
|
|
37
|
-
- Report status to user
|
|
38
|
-
|
|
39
|
-
❌ **DON'T:**
|
|
40
|
-
- Ignore workflow failures
|
|
41
|
-
- Push again without fixing
|
|
42
|
-
- Skip error analysis
|
|
43
|
-
- Proceed if workflows failing
|
|
44
|
-
- Create tags if CI/CD failed
|
|
45
|
-
|
|
46
|
-
## Configuration
|
|
47
|
-
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"mcpServers": {
|
|
51
|
-
"github": {
|
|
52
|
-
"command": "npx",
|
|
53
|
-
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
54
|
-
"env": {
|
|
55
|
-
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
**Token permissions:** Repository (read), Actions (read), Workflows (read/write)
|
|
63
|
-
|
|
64
|
-
<!-- GITHUB_MCP:END -->
|
|
1
|
+
<!-- GITHUB_MCP:START -->
|
|
2
|
+
# GitHub MCP Server Integration
|
|
3
|
+
|
|
4
|
+
**CRITICAL**: Monitor CI/CD workflows after every `git push` using GitHub MCP.
|
|
5
|
+
|
|
6
|
+
## Workflow After Push
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
1. Push changes
|
|
10
|
+
2. Wait 10 seconds
|
|
11
|
+
3. Check workflow status via GitHub MCP
|
|
12
|
+
4. If workflows running → check again in next interaction
|
|
13
|
+
5. If workflows failed → fetch logs, analyze, fix
|
|
14
|
+
6. If workflows passed → confirm to user
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Error Recovery
|
|
18
|
+
|
|
19
|
+
**When CI/CD fails:**
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
1. Fetch error information (workflow, job, step, logs)
|
|
23
|
+
2. Analyze against AGENTS.md standards
|
|
24
|
+
3. Propose fix
|
|
25
|
+
4. Implement fix with full quality checks
|
|
26
|
+
5. Commit and provide push command
|
|
27
|
+
6. Monitor workflows again
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Best Practices
|
|
31
|
+
|
|
32
|
+
✅ **DO:**
|
|
33
|
+
- Always check workflows after push
|
|
34
|
+
- Fetch complete error logs on failures
|
|
35
|
+
- Fix issues before next feature
|
|
36
|
+
- Verify fixes locally before re-pushing
|
|
37
|
+
- Report status to user
|
|
38
|
+
|
|
39
|
+
❌ **DON'T:**
|
|
40
|
+
- Ignore workflow failures
|
|
41
|
+
- Push again without fixing
|
|
42
|
+
- Skip error analysis
|
|
43
|
+
- Proceed if workflows failing
|
|
44
|
+
- Create tags if CI/CD failed
|
|
45
|
+
|
|
46
|
+
## Configuration
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"github": {
|
|
52
|
+
"command": "npx",
|
|
53
|
+
"args": ["-y", "@modelcontextprotocol/server-github"],
|
|
54
|
+
"env": {
|
|
55
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Token permissions:** Repository (read), Actions (read), Workflows (read/write)
|
|
63
|
+
|
|
64
|
+
<!-- GITHUB_MCP:END -->
|