pdd-skills 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1478 -0
- package/bin/pdd.js +354 -0
- package/config/bpmn-rules.yaml +166 -0
- package/config/checkstyle.xml +105 -0
- package/config/eslint.config.js +48 -0
- package/config/pmd.xml +91 -0
- package/config/prd-rules.yaml +113 -0
- package/config/ruff.toml +45 -0
- package/config/sqlfluff.cfg +82 -0
- package/hooks/hook-executor.js +332 -0
- package/index.js +43 -0
- package/lib/api-routes.js +750 -0
- package/lib/api-server.js +408 -0
- package/lib/cache/cache-config.js +209 -0
- package/lib/cache/system-cache.js +852 -0
- package/lib/config-manager.js +373 -0
- package/lib/generate.js +528 -0
- package/lib/grpc/grpc-routes.js +1134 -0
- package/lib/grpc/grpc-server.js +912 -0
- package/lib/grpc/proto-definitions.js +1033 -0
- package/lib/init.js +172 -0
- package/lib/iteration/auto-fixer.js +1025 -0
- package/lib/iteration/auto-reviewer.js +923 -0
- package/lib/iteration/controller.js +577 -0
- package/lib/list.js +130 -0
- package/lib/mcp-server.js +548 -0
- package/lib/openclaw/api-integration.js +535 -0
- package/lib/openclaw/cli-integration.js +567 -0
- package/lib/openclaw/data-sync.js +845 -0
- package/lib/openclaw/openclaw-adapter.js +783 -0
- package/lib/plugin/example-plugins/code-stats/index.js +332 -0
- package/lib/plugin/example-plugins/code-stats/plugin.json +1 -0
- package/lib/plugin/example-plugins/custom-linter/index.js +472 -0
- package/lib/plugin/example-plugins/custom-linter/plugin.json +1 -0
- package/lib/plugin/example-plugins/hello-world/index.js +86 -0
- package/lib/plugin/example-plugins/hello-world/plugin.json +1 -0
- package/lib/plugin/plugin-manager.js +655 -0
- package/lib/plugin/plugin-sdk.js +565 -0
- package/lib/plugin/sandbox.js +627 -0
- package/lib/quality/rules/maintainability.js +418 -0
- package/lib/quality/rules/performance.js +498 -0
- package/lib/quality/rules/readability.js +441 -0
- package/lib/quality/rules/robustness.js +504 -0
- package/lib/quality/rules/security.js +444 -0
- package/lib/quality/scorer.js +576 -0
- package/lib/report.js +669 -0
- package/lib/sdk-base.js +301 -0
- package/lib/sdk-js.js +446 -0
- package/lib/sdk-python/README.md +546 -0
- package/lib/sdk-python/examples/basic_usage.py +450 -0
- package/lib/sdk-python/pdd_sdk/__init__.py +180 -0
- package/lib/sdk-python/pdd_sdk/client.py +1170 -0
- package/lib/sdk-python/pdd_sdk/events.py +423 -0
- package/lib/sdk-python/pdd_sdk/exceptions.py +158 -0
- package/lib/sdk-python/pdd_sdk/models.py +518 -0
- package/lib/sdk-python/pdd_sdk/utils.py +759 -0
- package/lib/token/budget-alert.js +367 -0
- package/lib/token/budget-manager.js +485 -0
- package/lib/update.js +54 -0
- package/lib/utils/logger.js +88 -0
- package/lib/verify.js +741 -0
- package/lib/version.js +52 -0
- package/lib/vm/README.md +102 -0
- package/lib/vm/dashboard/api-routes.js +669 -0
- package/lib/vm/dashboard/server.js +391 -0
- package/lib/vm/dashboard/sse.js +358 -0
- package/lib/vm/dashboard/static/css/dashboard.css +1378 -0
- package/lib/vm/dashboard/static/index.html +118 -0
- package/lib/vm/dashboard/static/js/app.js +949 -0
- package/lib/vm/dashboard/static/js/charts.js +913 -0
- package/lib/vm/dashboard/static/js/kanban-view.js +1053 -0
- package/lib/vm/dashboard/static/js/pipeline-view.js +463 -0
- package/lib/vm/dashboard/static/js/quality-view.js +598 -0
- package/lib/vm/dashboard/static/js/system-view.js +1021 -0
- package/lib/vm/data-provider.js +1191 -0
- package/lib/vm/event-bus.js +402 -0
- package/lib/vm/hooks/extract-hook.js +307 -0
- package/lib/vm/hooks/generate-hook.js +374 -0
- package/lib/vm/hooks/hook-interface.js +458 -0
- package/lib/vm/hooks/report-hook.js +331 -0
- package/lib/vm/hooks/verify-hook.js +454 -0
- package/lib/vm/models.js +1003 -0
- package/lib/vm/reconciler.js +855 -0
- package/lib/vm/scanner.js +988 -0
- package/lib/vm/state-schema.js +955 -0
- package/lib/vm/state-store.js +733 -0
- package/lib/vm/tui/components/card.js +339 -0
- package/lib/vm/tui/components/progress-bar.js +368 -0
- package/lib/vm/tui/components/sparkline.js +327 -0
- package/lib/vm/tui/components/status-light.js +294 -0
- package/lib/vm/tui/components/table.js +370 -0
- package/lib/vm/tui/input.js +335 -0
- package/lib/vm/tui/renderer.js +548 -0
- package/lib/vm/tui/screens/kanban-screen.js +397 -0
- package/lib/vm/tui/screens/overview-screen.js +357 -0
- package/lib/vm/tui/screens/quality-screen.js +336 -0
- package/lib/vm/tui/screens/system-screen.js +379 -0
- package/lib/vm/tui/tui.js +805 -0
- package/package.json +1 -0
- package/scripts/cso-analyzer.js +198 -0
- package/scripts/eval-runner.js +359 -0
- package/scripts/i18n-checker.js +109 -0
- package/scripts/linter/activiti-linter.js +272 -0
- package/scripts/linter/prd-linter.js +162 -0
- package/scripts/linter/report-generator.js +207 -0
- package/scripts/linter/run-linters.js +285 -0
- package/scripts/linter/sql-linter.js +166 -0
- package/scripts/token-analyzer.js +162 -0
- package/scripts/vm-test.js +180 -0
- package/skills/core/official-doc-writer/LICENSE +21 -0
- package/skills/core/official-doc-writer/README.md +232 -0
- package/skills/core/official-doc-writer/SKILL.md +475 -0
- package/skills/core/official-doc-writer/_meta.json +1 -0
- package/skills/core/official-doc-writer/document_generator.py +580 -0
- package/skills/core/official-doc-writer/evals/default-evals.json +1 -0
- package/skills/core/official-doc-writer/examples.md +150 -0
- package/skills/core/official-doc-writer/fonts/FONTS_LIST.md +45 -0
- package/skills/core/official-doc-writer/fonts/README.md +141 -0
- package/skills/core/official-doc-writer/fonts/SIMFANG.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMHEI.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMKAI.TTF +0 -0
- package/skills/core/official-doc-writer/fonts/SIMSUN.TTC +0 -0
- package/skills/core/official-doc-writer/fonts//346/226/271/346/255/243/345/260/217/346/240/207/345/256/213GBK.TTF +0 -0
- package/skills/core/official-doc-writer/references/GBT_9704-2012_/345/205/232/346/224/277/346/234/272/345/205/263/345/205/254/346/226/207/346/240/274/345/274/217.md +422 -0
- package/skills/core/official-doc-writer/scripts/__pycache__/generate_official_doc.cpython-313.pyc +0 -0
- package/skills/core/official-doc-writer/scripts/dialog_manager.py +564 -0
- package/skills/core/official-doc-writer/scripts/generate_official_doc.py +252 -0
- package/skills/core/official-doc-writer/scripts/install_fonts.py +390 -0
- package/skills/core/official-doc-writer/scripts/smart_prompts.py +363 -0
- package/skills/core/pdd-ba/SKILL.md +305 -0
- package/skills/core/pdd-ba/_meta.json +1 -0
- package/skills/core/pdd-ba/evals/default-evals.json +1 -0
- package/skills/core/pdd-code-reviewer/SKILL.md +378 -0
- package/skills/core/pdd-code-reviewer/_meta.json +1 -0
- package/skills/core/pdd-code-reviewer/evals/default-evals.json +1 -0
- package/skills/core/pdd-doc-change/SKILL.md +350 -0
- package/skills/core/pdd-doc-change/_meta.json +1 -0
- package/skills/core/pdd-doc-change/evals/default-evals.json +1 -0
- package/skills/core/pdd-doc-gardener/SKILL.md +248 -0
- package/skills/core/pdd-doc-gardener/_meta.json +1 -0
- package/skills/core/pdd-doc-gardener/evals/default-evals.json +1 -0
- package/skills/core/pdd-entropy-reduction/SKILL.md +360 -0
- package/skills/core/pdd-entropy-reduction/_meta.json +1 -0
- package/skills/core/pdd-entropy-reduction/evals/default-evals.json +1 -0
- package/skills/core/pdd-entropy-reduction/references/entropy-report-template.md +287 -0
- package/skills/core/pdd-entropy-reduction/references/golden-principles.md +573 -0
- package/skills/core/pdd-entropy-reduction/scripts/entropy_scan.py +712 -0
- package/skills/core/pdd-extract-features/SKILL.md +320 -0
- package/skills/core/pdd-extract-features/_meta.json +1 -0
- package/skills/core/pdd-extract-features/evals/default-evals.json +1 -0
- package/skills/core/pdd-generate-spec/SKILL.md +418 -0
- package/skills/core/pdd-generate-spec/_meta.json +1 -0
- package/skills/core/pdd-generate-spec/evals/default-evals.json +1 -0
- package/skills/core/pdd-implement-feature/SKILL.md +332 -0
- package/skills/core/pdd-implement-feature/_meta.json +1 -0
- package/skills/core/pdd-implement-feature/evals/default-evals.json +1 -0
- package/skills/core/pdd-main/SKILL.md +540 -0
- package/skills/core/pdd-main/_meta.json +1 -0
- package/skills/core/pdd-main/evals/default-evals.json +1 -0
- package/skills/core/pdd-main/evals/evals.json +215 -0
- package/skills/core/pdd-verify-feature/SKILL.md +474 -0
- package/skills/core/pdd-verify-feature/_meta.json +1 -0
- package/skills/core/pdd-verify-feature/evals/default-evals.json +1 -0
- package/skills/core/pdd-vm/evals/default-evals.json +1 -0
- package/skills/core/traffic-accident-assessor/LICENSE +29 -0
- package/skills/core/traffic-accident-assessor/SKILL.md +439 -0
- package/skills/core/traffic-accident-assessor/evals/evals.json +1 -0
- package/skills/core/traffic-accident-assessor/references/accident-types.md +369 -0
- package/skills/core/traffic-accident-assessor/references/liability-rules.md +287 -0
- package/skills/core/traffic-accident-assessor/references/traffic-laws.md +226 -0
- package/skills/core/traffic-accident-assessor/references//351/253/230/345/260/224/345/244/253/350/257/264/346/230/216/344/271/246.pdf +32576 -106
- package/skills/core/traffic-accident-assessor/scripts/generate_official_statement.py +588 -0
- package/skills/core/traffic-accident-assessor/scripts/generate_report.py +495 -0
- package/skills/core/traffic-accident-assessor/scripts/generate_statement.py +528 -0
- package/skills/core/traffic-accident-assessor.zip +0 -0
- package/skills/entropy/expert-arch-enforcer/SKILL.md +292 -0
- package/skills/entropy/expert-arch-enforcer/_meta.json +1 -0
- package/skills/entropy/expert-arch-enforcer/evals/default-evals.json +1 -0
- package/skills/entropy/expert-auto-refactor/SKILL.md +327 -0
- package/skills/entropy/expert-auto-refactor/_meta.json +1 -0
- package/skills/entropy/expert-auto-refactor/evals/default-evals.json +1 -0
- package/skills/entropy/expert-code-quality/SKILL.md +468 -0
- package/skills/entropy/expert-code-quality/_meta.json +1 -0
- package/skills/entropy/expert-code-quality/evals/default-evals.json +1 -0
- package/skills/entropy/expert-code-quality/evals/evals.json +109 -0
- package/skills/entropy/expert-code-quality/references/code-smells.md +605 -0
- package/skills/entropy/expert-code-quality/references/design-patterns.md +1111 -0
- package/skills/entropy/expert-code-quality/references/refactoring-catalog.md +1281 -0
- package/skills/entropy/expert-code-quality/references/solid-principles.md +524 -0
- package/skills/entropy/expert-entropy-auditor/SKILL.md +276 -0
- package/skills/entropy/expert-entropy-auditor/_meta.json +1 -0
- package/skills/entropy/expert-entropy-auditor/evals/default-evals.json +1 -0
- package/skills/expert/expert-activiti/SKILL.md +497 -0
- package/skills/expert/expert-activiti/_meta.json +1 -0
- package/skills/expert/expert-mysql/SKILL.md +832 -0
- package/skills/expert/expert-mysql/_meta.json +1 -0
- package/skills/expert/expert-performance/SKILL.md +379 -0
- package/skills/expert/expert-performance/_meta.json +1 -0
- package/skills/expert/expert-performance/evals/default-evals.json +1 -0
- package/skills/expert/expert-ruoyi/SKILL.md +472 -0
- package/skills/expert/expert-ruoyi/_meta.json +1 -0
- package/skills/expert/expert-security/SKILL.md +1341 -0
- package/skills/expert/expert-security/_meta.json +1 -0
- package/skills/expert/expert-security/evals/default-evals.json +1 -0
- package/skills/expert/software-architect/SKILL.md +350 -0
- package/skills/expert/software-architect/_meta.json +1 -0
- package/skills/expert/software-engineer/SKILL.md +437 -0
- package/skills/expert/software-engineer/_meta.json +1 -0
- package/skills/expert/software-engineer/architecture.md +130 -0
- package/skills/expert/software-engineer/patterns.md +151 -0
- package/skills/expert/software-engineer/testing.md +135 -0
- package/skills/expert/system-architect/SKILL.md +628 -0
- package/skills/expert/system-architect/_meta.json +1 -0
- package/skills/expert/system-architect/assets/templates/ARCHITECTURE.md +25 -0
- package/skills/expert/system-architect/assets/templates/README.md +44 -0
- package/skills/expert/system-architect/references/js-ts-standards.md +18 -0
- package/skills/expert/system-architect/references/python-standards.md +19 -0
- package/skills/expert/system-architect/references/scaffolding.md +61 -0
- package/skills/expert/system-architect/references/security-checklist.md +21 -0
- package/skills/openspec/openspec-apply-change/SKILL.md +156 -0
- package/skills/openspec/openspec-apply-change/_meta.json +1 -0
- package/skills/openspec/openspec-archive-change/SKILL.md +114 -0
- package/skills/openspec/openspec-archive-change/_meta.json +1 -0
- package/skills/openspec/openspec-bulk-archive-change/SKILL.md +246 -0
- package/skills/openspec/openspec-bulk-archive-change/_meta.json +1 -0
- package/skills/openspec/openspec-continue-change/SKILL.md +118 -0
- package/skills/openspec/openspec-continue-change/_meta.json +1 -0
- package/skills/openspec/openspec-explore/SKILL.md +288 -0
- package/skills/openspec/openspec-explore/_meta.json +1 -0
- package/skills/openspec/openspec-ff-change/SKILL.md +101 -0
- package/skills/openspec/openspec-ff-change/_meta.json +1 -0
- package/skills/openspec/openspec-new-change/SKILL.md +74 -0
- package/skills/openspec/openspec-new-change/_meta.json +1 -0
- package/skills/openspec/openspec-onboard/SKILL.md +554 -0
- package/skills/openspec/openspec-onboard/_meta.json +1 -0
- package/skills/openspec/openspec-sync-specs/SKILL.md +138 -0
- package/skills/openspec/openspec-sync-specs/_meta.json +1 -0
- package/skills/openspec/openspec-verify-change/SKILL.md +168 -0
- package/skills/openspec/openspec-verify-change/_meta.json +1 -0
- package/skills/pr/pdd-multi-review/SKILL.md +534 -0
- package/skills/pr/pdd-multi-review/_meta.json +1 -0
- package/skills/pr/pdd-pr-batch/SKILL.md +303 -0
- package/skills/pr/pdd-pr-batch/_meta.json +1 -0
- package/skills/pr/pdd-pr-create/SKILL.md +344 -0
- package/skills/pr/pdd-pr-create/_meta.json +1 -0
- package/skills/pr/pdd-pr-merge/SKILL.md +286 -0
- package/skills/pr/pdd-pr-merge/_meta.json +1 -0
- package/skills/pr/pdd-pr-review/SKILL.md +217 -0
- package/skills/pr/pdd-pr-review/_meta.json +1 -0
- package/skills/pr/pdd-task-manager/SKILL.md +636 -0
- package/skills/pr/pdd-task-manager/_meta.json +1 -0
- package/skills/pr/pdd-template-engine/SKILL.md +306 -0
- package/skills/pr/pdd-template-engine/_meta.json +1 -0
- package/templates/behavior-shaping/iron-law-template.md +87 -0
- package/templates/behavior-shaping/rationalization-template.md +62 -0
- package/templates/behavior-shaping/red-flags-template.md +70 -0
- package/templates/bilingual-template.md +139 -0
- package/templates/config/default.yaml +47 -0
- package/templates/project/default/README.md +31 -0
- package/templates/project/frontend/README.md +46 -0
- package/templates/project/java/README.md +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name": "expert-security", "version": "1.0.0", "category": "expert", "description": "Security expert providing code vulnerability scanning, OWASP Top 10 compliance checking, and secure coding recommendations. Covers SQL injection, XSS, CSRF, authentication bypass, authorization flaws, and data protection. Invoke when security audit, vulnerability scan, penetration testing prep, or secure coding guidance needed. 支持中文触发:安全审计、漏洞扫描、安全编码、OWASP、渗透测试、代码安全。", "triggers": ["安全审计", "漏洞扫描", "安全编码", "OWASP检查", "渗透测试", "代码安全", "security audit", "vulnerability scan", "secure coding", "penetration test"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"skill": "expert-security", "version": "1.0.0", "tests": [{"id": "SEC-001", "type": "structure", "name": "SKILL.md-exists", "check": "file_exists", "path": "SKILL.md"}, {"id": "SEC-002", "type": "structure", "name": "_meta.json-valid", "check": "file_exists", "path": "_meta.json"}, {"id": "SEC-003", "type": "quality", "name": "has-behavior-shaping", "check": "contains", "target": "SKILL.md", "contains": ["Iron Law", "Rationalization Table", "Red Flags"]}, {"id": "SEC-004", "type": "content", "name": "domain-sql-injection", "check": "contains", "target": "SKILL.md", "contains": ["SQL注入", "SQL injection", "PreparedStatement", "参数化查询"]}, {"id": "SEC-005", "type": "content", "name": "domain-xss-protection", "check": "contains", "target": "SKILL.md", "contains": ["XSS", "cross-site scripting", "转义", "escape"]}]}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: software-architect
|
|
3
|
+
description: "Software Architect designing scalable systems with maintainable patterns. Use when evaluating architectural trade-offs."
|
|
4
|
+
license: "MIT"
|
|
5
|
+
author: "neuqik@hotmail.com"
|
|
6
|
+
version: "2.0"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Software Architect
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
This skill focuses on:
|
|
14
|
+
- High-level system design and architectural patterns
|
|
15
|
+
- System boundaries and interfaces
|
|
16
|
+
- Data architecture decisions
|
|
17
|
+
- Scalability and reliability design
|
|
18
|
+
- Trade-off analysis and decision documentation
|
|
19
|
+
|
|
20
|
+
**Note**: This is a detailed architecture design skill, focusing on module boundaries and design decisions. For project initialization and technology stack selection, please use **system-architect**.
|
|
21
|
+
|
|
22
|
+
## Directory Structure
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
software-architect/
|
|
26
|
+
├── SKILL.md # Skill definition file
|
|
27
|
+
└── LICENSE # MIT License
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Trigger Conditions
|
|
31
|
+
|
|
32
|
+
**Automatic Trigger:**
|
|
33
|
+
- Designing system architecture or module boundaries
|
|
34
|
+
- Evaluating architectural trade-offs (microservices vs monolith, SQL vs NoSQL)
|
|
35
|
+
- Discussing system-level scalability, reliability, or performance
|
|
36
|
+
- Making high-level technical decisions affecting multiple components
|
|
37
|
+
- Planning system evolution or migration strategies
|
|
38
|
+
|
|
39
|
+
**Manual Trigger:**
|
|
40
|
+
- User inputs commands like `/software-architect`, `/architecture`, `/design`, etc.
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Core Capabilities
|
|
45
|
+
|
|
46
|
+
### 1. Design Principles
|
|
47
|
+
|
|
48
|
+
- **Simple until proven otherwise** — Complexity is a cost, not a feature
|
|
49
|
+
- **Separate what changes from what stays the same** — Draw boundaries at seams of change
|
|
50
|
+
- **Design for the next 10x, not 100x** — Over-engineering wastes resources
|
|
51
|
+
- **Make decisions reversible when possible** — Delay irreversible decisions until necessary
|
|
52
|
+
- **Constraints clarify design** — Embrace limits, don't fight them early
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### 2. System Boundaries
|
|
57
|
+
|
|
58
|
+
- Define clear interfaces between components — Contracts enable independent evolution
|
|
59
|
+
- Draw boundaries where teams split — Conway's Law is real, design with it
|
|
60
|
+
- Data ownership at boundaries — Single source of truth for each entity
|
|
61
|
+
- Async communication for loose coupling — Sync calls create distributed monoliths
|
|
62
|
+
- Fail independently — One component's failure shouldn't cascade
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 3. Trade-off Analysis
|
|
67
|
+
|
|
68
|
+
- Every decision has costs — Articulate what you're giving up
|
|
69
|
+
- Consistency vs Availability vs Partition Tolerance — Pick two (CAP Theorem)
|
|
70
|
+
- Performance vs Maintainability — Optimize hot paths, keep the rest readable
|
|
71
|
+
- Build vs Buy — Build what differentiates, buy what's commodity
|
|
72
|
+
- Document "why not" for rejected alternatives — Future you needs context
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### 4. Scalability
|
|
77
|
+
|
|
78
|
+
- Stateless services scale horizontally — State makes scaling hard
|
|
79
|
+
- Cache aggressively, invalidate carefully — Caching solves problems and creates them
|
|
80
|
+
- Databases are usually the bottleneck — Read replicas, sharding, or denormalize
|
|
81
|
+
- Queue what can be async — Users don't need to wait for everything
|
|
82
|
+
- Scale for expected load, provision for 3x peaks — Buffers prevent outages
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### 5. Data Architecture
|
|
87
|
+
|
|
88
|
+
- Schema design constrains everything — Get it right early, migrations are expensive
|
|
89
|
+
- Normalize for writes, denormalize for reads — Optimize for access patterns
|
|
90
|
+
- Event sourcing when audit trail matters — Rebuild state from events
|
|
91
|
+
- CQRS when read/write patterns differ significantly — Separate models for each
|
|
92
|
+
- Data gravity is real — Move processing to data, not the other way around
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### 6. Reliability
|
|
97
|
+
|
|
98
|
+
- Design for failure — Everything fails eventually, handle it gracefully
|
|
99
|
+
- Timeouts on all external calls — Hung connections cascade into outages
|
|
100
|
+
- Circuit breakers prevent cascading failures — Fail fast, recover gradually
|
|
101
|
+
- Idempotency enables retries — Duplicate messages shouldn't break state
|
|
102
|
+
- Graceful degradation beats total failure — Partial functionality beats error pages
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
### 7. Security
|
|
107
|
+
|
|
108
|
+
- Defense in depth — Multiple layers, no single point of failure
|
|
109
|
+
- Least privilege — Minimum permissions for each component
|
|
110
|
+
- Encrypt in transit and at rest — Assume network and disk are hostile
|
|
111
|
+
- Validate at boundaries — Don't trust input from outside your system
|
|
112
|
+
- Secrets management from day one — Retrofitting is painful
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### 8. Evolution
|
|
117
|
+
|
|
118
|
+
- Design for replacement, not immortality — Components will be rewritten
|
|
119
|
+
- Incremental migration over big bang — Strangler fig pattern works
|
|
120
|
+
- APIs backward compatible — Breaking changes break trust
|
|
121
|
+
- Feature flags decouple deploy from release — Dark launch, gradual rollout
|
|
122
|
+
- Monitor before and after changes — Data beats intuition
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
### 9. Architecture Decision Records (ADR)
|
|
127
|
+
|
|
128
|
+
When making significant architectural decisions, use this template to document:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
# ADR-[NUMBER]: [Decision Title]
|
|
132
|
+
|
|
133
|
+
## Status
|
|
134
|
+
[Proposed | Accepted | Deprecated | Superseded]
|
|
135
|
+
|
|
136
|
+
## Context
|
|
137
|
+
[Why this decision is needed — What problem are we solving?]
|
|
138
|
+
|
|
139
|
+
## Decision
|
|
140
|
+
[What was decided — The actual decision]
|
|
141
|
+
|
|
142
|
+
## Consequences
|
|
143
|
+
[What are the results — Positive and negative]
|
|
144
|
+
|
|
145
|
+
## Alternatives Considered
|
|
146
|
+
[What other options were evaluated and why they were rejected]
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### ADR Example
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
# ADR-001: Use PostgreSQL as Primary Database
|
|
153
|
+
|
|
154
|
+
## Status
|
|
155
|
+
Accepted
|
|
156
|
+
|
|
157
|
+
## Context
|
|
158
|
+
Need a reliable, ACID-compliant database for financial transactions.
|
|
159
|
+
System requires complex queries with joins and aggregations. Team has PostgreSQL expertise.
|
|
160
|
+
|
|
161
|
+
## Decision
|
|
162
|
+
Use PostgreSQL as the primary database for the asset management system.
|
|
163
|
+
|
|
164
|
+
## Consequences
|
|
165
|
+
**Positive:**
|
|
166
|
+
- ACID compliance ensures data integrity
|
|
167
|
+
- Strong ecosystem and community support
|
|
168
|
+
- Advanced features (JSONB, full-text search, window functions)
|
|
169
|
+
- Team productivity (familiar technology)
|
|
170
|
+
|
|
171
|
+
**Negative:**
|
|
172
|
+
- Vertical scaling limits (may need read replicas)
|
|
173
|
+
- Less flexible for unstructured data than NoSQL
|
|
174
|
+
|
|
175
|
+
## Alternatives Considered
|
|
176
|
+
1. **MySQL**: Fewer features, weaker JSON support
|
|
177
|
+
2. **MongoDB**: No ACID transactions, not suitable for financial data
|
|
178
|
+
3. **CockroachDB**: Too new, higher operational complexity
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
### 10. Common Architectural Patterns
|
|
184
|
+
|
|
185
|
+
#### 10.1 Microservices vs Monolith
|
|
186
|
+
|
|
187
|
+
**Choose Monolith when:**
|
|
188
|
+
- Team size < 20 engineers
|
|
189
|
+
- Domain boundaries unclear
|
|
190
|
+
- Time to market is critical
|
|
191
|
+
- Operational complexity is a concern
|
|
192
|
+
|
|
193
|
+
**Choose Microservices when:**
|
|
194
|
+
- Multiple teams with clear ownership
|
|
195
|
+
- Different scalability needs per domain
|
|
196
|
+
- Independent deployment is critical
|
|
197
|
+
- Technology diversity is needed
|
|
198
|
+
|
|
199
|
+
#### 10.2 Event-Driven Architecture
|
|
200
|
+
|
|
201
|
+
**Use when:**
|
|
202
|
+
- Loose coupling between services needed
|
|
203
|
+
- Audit trail is important
|
|
204
|
+
- System needs to react to changes
|
|
205
|
+
- High throughput with eventual consistency
|
|
206
|
+
|
|
207
|
+
**Structure:**
|
|
208
|
+
```
|
|
209
|
+
Service A → Event Bus → Service B
|
|
210
|
+
→ Service C
|
|
211
|
+
→ Service D
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
#### 10.3 CQRS (Command Query Responsibility Segregation)
|
|
215
|
+
|
|
216
|
+
**Use when:**
|
|
217
|
+
- Read and write patterns differ significantly
|
|
218
|
+
- Need to optimize read models
|
|
219
|
+
- Write operations have complex business logic
|
|
220
|
+
- Read and write scalability needs differ
|
|
221
|
+
|
|
222
|
+
**Structure:**
|
|
223
|
+
```
|
|
224
|
+
Write Model (Command) → Event Store → Read Model (Query)
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
#### 10.4 Hexagonal Architecture
|
|
228
|
+
|
|
229
|
+
**Structure:**
|
|
230
|
+
```
|
|
231
|
+
┌─────────────────────────────────────┐
|
|
232
|
+
│ Ports │
|
|
233
|
+
│ ┌─────────────────────────────────┐ │
|
|
234
|
+
│ │ │ │
|
|
235
|
+
│ │ Core │ │
|
|
236
|
+
│ │ Business Logic / Domain │ │
|
|
237
|
+
│ │ │ │
|
|
238
|
+
│ └─────────────────────────────────┘ │
|
|
239
|
+
│ Adapters │
|
|
240
|
+
└─────────────────────────────────────┘
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### 11. Anti-patterns
|
|
246
|
+
|
|
247
|
+
1. **Distributed Monolith**: Services tightly coupled via sync HTTP calls
|
|
248
|
+
2. **Golden Hammer**: Using the same technology for every problem
|
|
249
|
+
3. **Big Ball of Mud**: No clear boundaries or structure
|
|
250
|
+
4. **Cargo Cult**: Copying architectures without understanding why
|
|
251
|
+
5. **Premature Optimization**: Optimizing before measuring
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### 12. Decision Framework
|
|
256
|
+
|
|
257
|
+
When facing architectural decisions, follow this process:
|
|
258
|
+
|
|
259
|
+
1. **Understand the Problem** - What are we solving?
|
|
260
|
+
2. **Identify Constraints** - Time, budget, team skills, compliance
|
|
261
|
+
3. **Generate Options** - At least 3 alternatives
|
|
262
|
+
4. **Evaluate Trade-offs** - Use criteria above
|
|
263
|
+
5. **Make Decision** - Document with ADR
|
|
264
|
+
6. **Validate** - Prototype if necessary
|
|
265
|
+
7. **Iterate** - Be ready to change if wrong
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
### 13. Collaboration Table
|
|
270
|
+
|
|
271
|
+
#### 13.1 Collaboration with Other Skills
|
|
272
|
+
|
|
273
|
+
| Collaborating Skill | Collaboration Mode | Description |
|
|
274
|
+
|---------|---------|------|
|
|
275
|
+
| **system-architect** | Consult | Get project context before detailed design |
|
|
276
|
+
| **software-engineer** | Delegate | Delegate code implementation after architectural decisions |
|
|
277
|
+
| **expert-code-quality** | Reference | Code quality check after architecture review |
|
|
278
|
+
| **pdd-generate-spec** | Sequence | Generate detailed specs after architecture design |
|
|
279
|
+
| **pdd-code-reviewer** | Reference | Get architecture-level code review |
|
|
280
|
+
| **expert-mysql** | Consult | Consult before data architecture decisions |
|
|
281
|
+
|
|
282
|
+
#### 13.2 Collaboration Process
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
System Architecture Requirements
|
|
286
|
+
↓
|
|
287
|
+
Invoke software-architect
|
|
288
|
+
↓
|
|
289
|
+
High-level Design + ADR Documentation
|
|
290
|
+
↓
|
|
291
|
+
(If project initialization needed) → Invoke system-architect
|
|
292
|
+
↓
|
|
293
|
+
(If detailed specs needed) → Invoke pdd-generate-spec
|
|
294
|
+
↓
|
|
295
|
+
(If code implementation needed) → Invoke software-engineer
|
|
296
|
+
↓
|
|
297
|
+
(If code quality check needed) → Invoke expert-code-quality
|
|
298
|
+
↓
|
|
299
|
+
Architecture Design Complete
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### 14. Documentation Best Practices
|
|
305
|
+
|
|
306
|
+
- Document decisions, not just structure — ADRs capture reasoning
|
|
307
|
+
- Multi-level zoomable diagrams — C4 Model: Context, Container, Component
|
|
308
|
+
- Documentation close to code — Separate wikis go stale
|
|
309
|
+
- Update docs when architecture changes — Wrong docs are worse than none
|
|
310
|
+
- Document operational aspects — Runbooks, SLOs, failure modes
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
### 15. Communication Skills
|
|
315
|
+
|
|
316
|
+
- Translate technical decisions to business impact — Stakeholders need context
|
|
317
|
+
- Present options with trade-offs — Don't just recommend, explain
|
|
318
|
+
- Listen to operators — They know what breaks
|
|
319
|
+
- Involve security early — Bolted-on security is weak security
|
|
320
|
+
- Decisions need buy-in — Imposed architecture breeds resentment
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
### 16. Guardrails
|
|
325
|
+
|
|
326
|
+
- Architectural decisions must include trade-off analysis and alternatives
|
|
327
|
+
- Major decisions must be documented using ADR template
|
|
328
|
+
- Pattern selection must consider context, no blind recommendations
|
|
329
|
+
- Design must consider testability and deployability
|
|
330
|
+
- Decisions must be driven by clear problems or requirements
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Version History
|
|
335
|
+
|
|
336
|
+
### v2.0 (2026-03-21)
|
|
337
|
+
- Unified to English descriptions
|
|
338
|
+
- Added collaboration table, clarifying relationships with other skills
|
|
339
|
+
- Enhanced ADR template and examples
|
|
340
|
+
- Standardized output format
|
|
341
|
+
- Added hexagonal architecture pattern
|
|
342
|
+
|
|
343
|
+
### v1.0 (Initial Version)
|
|
344
|
+
- Basic design principles
|
|
345
|
+
- Trade-off analysis framework
|
|
346
|
+
- Architecture decision record template
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
> **Remember**: Good architecture is about making the right trade-offs and keeping things simple where appropriate. Choose reversible decisions, delay irreversible ones.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name": "software-architect", "version": "1.0.0", "category": "expert", "description": "Software Architect specializing in technology stack selection, system architecture design, and large-scale codebase refactoring. Call this Skill when selecting appropriate technologies, designing scalable systems, evaluating trade-offs between approaches, or planning major architectural changes. 支持中文触发:软件架构、技术栈选择、架构方案、微服务架构、分布式设计、重构方案。", "triggers": ["软件架构", "技术栈选择", "架构方案", "微服务架构", "分布式设计"]}
|