oh-my-customcode 0.1.2 → 0.1.4
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 +45 -32
- package/dist/cli/index.js +12 -20
- package/dist/index.js +3 -3
- package/package.json +2 -2
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +68 -0
- package/templates/.claude/rules/MUST-parallel-execution.md +66 -9
- package/templates/.claude/rules/MUST-tool-identification.md +79 -17
- package/templates/.claude/rules/SHOULD-hud-statusline.md +8 -1
- package/templates/agents/index.yaml +6 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +334 -0
- package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +398 -0
- package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +174 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +96 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
- package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/11-sub-agents.md +159 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
- package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
- package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
- package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
- package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
- package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
- package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
- package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
- package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +334 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +398 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +174 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +96 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
- package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +334 -0
- package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +398 -0
- package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +174 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +96 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
- package/templates/agents/orchestrator/dev-lead/AGENT.md +47 -0
- package/templates/agents/orchestrator/secretary/AGENT.md +49 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +334 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +398 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +174 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +96 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
- package/templates/agents/tutor/go-tutor/index.yaml +48 -0
- package/templates/examples/code-review.yaml +66 -0
- package/templates/guides/claude-code/11-sub-agents.md +159 -0
- package/templates/index.yaml +18 -0
- package/templates/manifest.json +55 -0
- package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
- package/templates/templates/pipeline-template.yaml +50 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Rust Best Practices Skill
|
|
2
|
+
|
|
3
|
+
metadata:
|
|
4
|
+
name: rust-best-practices
|
|
5
|
+
category: development
|
|
6
|
+
description: Idiomatic Rust patterns from official guidelines
|
|
7
|
+
|
|
8
|
+
source:
|
|
9
|
+
type: internal
|
|
10
|
+
reference:
|
|
11
|
+
- https://doc.rust-lang.org/book/
|
|
12
|
+
- https://rust-lang.github.io/api-guidelines/
|
|
13
|
+
- https://doc.rust-lang.org/nightly/style-guide/
|
|
14
|
+
|
|
15
|
+
provides:
|
|
16
|
+
- Rust naming conventions
|
|
17
|
+
- Ownership and borrowing patterns
|
|
18
|
+
- Error handling patterns
|
|
19
|
+
- Trait and generic design
|
|
20
|
+
- Memory management guidelines
|
|
21
|
+
- Concurrency patterns
|
|
22
|
+
- API design guidelines
|
|
23
|
+
- Documentation standards
|
|
24
|
+
|
|
25
|
+
used_by:
|
|
26
|
+
- rust-expert
|
package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
# TypeScript Advanced Types
|
|
2
|
+
|
|
3
|
+
> Reference for advanced TypeScript type patterns
|
|
4
|
+
|
|
5
|
+
## Utility Types
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// Partial - make all properties optional
|
|
9
|
+
type PartialUser = Partial<User>;
|
|
10
|
+
|
|
11
|
+
// Required - make all properties required
|
|
12
|
+
type RequiredUser = Required<User>;
|
|
13
|
+
|
|
14
|
+
// Readonly - make all properties readonly
|
|
15
|
+
type ReadonlyUser = Readonly<User>;
|
|
16
|
+
|
|
17
|
+
// Pick - select specific properties
|
|
18
|
+
type UserName = Pick<User, 'name' | 'email'>;
|
|
19
|
+
|
|
20
|
+
// Omit - exclude specific properties
|
|
21
|
+
type UserWithoutId = Omit<User, 'id'>;
|
|
22
|
+
|
|
23
|
+
// Record - create object type with key-value pairs
|
|
24
|
+
type UserMap = Record<string, User>;
|
|
25
|
+
|
|
26
|
+
// Exclude - exclude types from union
|
|
27
|
+
type NonNullStatus = Exclude<Status | null, null>;
|
|
28
|
+
|
|
29
|
+
// Extract - extract types from union
|
|
30
|
+
type StringStatus = Extract<Status, string>;
|
|
31
|
+
|
|
32
|
+
// NonNullable - remove null and undefined
|
|
33
|
+
type DefinedValue = NonNullable<string | null | undefined>;
|
|
34
|
+
|
|
35
|
+
// ReturnType - get function return type
|
|
36
|
+
type Result = ReturnType<typeof fetchUser>;
|
|
37
|
+
|
|
38
|
+
// Parameters - get function parameter types
|
|
39
|
+
type Params = Parameters<typeof fetchUser>;
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Mapped Types
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
// Make all properties optional
|
|
46
|
+
type Optional<T> = {
|
|
47
|
+
[P in keyof T]?: T[P];
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Make all properties readonly
|
|
51
|
+
type Immutable<T> = {
|
|
52
|
+
readonly [P in keyof T]: T[P];
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// Make all properties nullable
|
|
56
|
+
type Nullable<T> = {
|
|
57
|
+
[P in keyof T]: T[P] | null;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Remap keys
|
|
61
|
+
type Getters<T> = {
|
|
62
|
+
[P in keyof T as `get${Capitalize<string & P>}`]: () => T[P];
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// Filter properties by type
|
|
66
|
+
type OnlyStrings<T> = {
|
|
67
|
+
[P in keyof T as T[P] extends string ? P : never]: T[P];
|
|
68
|
+
};
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Conditional Types
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// Basic conditional
|
|
75
|
+
type IsString<T> = T extends string ? true : false;
|
|
76
|
+
|
|
77
|
+
// With infer
|
|
78
|
+
type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
|
|
79
|
+
|
|
80
|
+
// Array element type
|
|
81
|
+
type ElementType<T> = T extends (infer E)[] ? E : never;
|
|
82
|
+
|
|
83
|
+
// Function return type
|
|
84
|
+
type GetReturnType<T> = T extends (...args: any[]) => infer R ? R : never;
|
|
85
|
+
|
|
86
|
+
// Distributive conditional
|
|
87
|
+
type ToArray<T> = T extends any ? T[] : never;
|
|
88
|
+
// ToArray<string | number> = string[] | number[]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Template Literal Types
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
// Simple template
|
|
95
|
+
type Greeting = `Hello, ${string}!`;
|
|
96
|
+
|
|
97
|
+
// With union
|
|
98
|
+
type EventHandler = `on${Capitalize<'click' | 'hover' | 'focus'>}`;
|
|
99
|
+
// 'onClick' | 'onHover' | 'onFocus'
|
|
100
|
+
|
|
101
|
+
// Extract from string
|
|
102
|
+
type ExtractRouteParams<T extends string> =
|
|
103
|
+
T extends `${string}:${infer Param}/${infer Rest}`
|
|
104
|
+
? Param | ExtractRouteParams<Rest>
|
|
105
|
+
: T extends `${string}:${infer Param}`
|
|
106
|
+
? Param
|
|
107
|
+
: never;
|
|
108
|
+
|
|
109
|
+
// ExtractRouteParams<'/users/:id/posts/:postId'>
|
|
110
|
+
// = 'id' | 'postId'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Discriminated Unions
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
interface Circle {
|
|
117
|
+
kind: 'circle';
|
|
118
|
+
radius: number;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
interface Square {
|
|
122
|
+
kind: 'square';
|
|
123
|
+
side: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
interface Rectangle {
|
|
127
|
+
kind: 'rectangle';
|
|
128
|
+
width: number;
|
|
129
|
+
height: number;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
type Shape = Circle | Square | Rectangle;
|
|
133
|
+
|
|
134
|
+
function getArea(shape: Shape): number {
|
|
135
|
+
switch (shape.kind) {
|
|
136
|
+
case 'circle':
|
|
137
|
+
return Math.PI * shape.radius ** 2;
|
|
138
|
+
case 'square':
|
|
139
|
+
return shape.side ** 2;
|
|
140
|
+
case 'rectangle':
|
|
141
|
+
return shape.width * shape.height;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Index Signatures
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// String index
|
|
150
|
+
interface Dictionary {
|
|
151
|
+
[key: string]: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Number index
|
|
155
|
+
interface NumberMap {
|
|
156
|
+
[index: number]: string;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// With specific properties
|
|
160
|
+
interface User {
|
|
161
|
+
id: string;
|
|
162
|
+
name: string;
|
|
163
|
+
[key: string]: string; // additional properties
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Template literal index
|
|
167
|
+
type Handlers = {
|
|
168
|
+
[K in `on${Capitalize<string>}`]: (event: Event) => void;
|
|
169
|
+
};
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Type Narrowing
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
// Control flow analysis
|
|
176
|
+
function process(value: string | number | null) {
|
|
177
|
+
if (value === null) {
|
|
178
|
+
return; // value is null
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (typeof value === 'string') {
|
|
182
|
+
console.log(value.toUpperCase()); // value is string
|
|
183
|
+
} else {
|
|
184
|
+
console.log(value.toFixed(2)); // value is number
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// Assertion functions
|
|
189
|
+
function assertIsString(value: unknown): asserts value is string {
|
|
190
|
+
if (typeof value !== 'string') {
|
|
191
|
+
throw new Error('Not a string');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Type predicates
|
|
196
|
+
function isNonNull<T>(value: T): value is NonNullable<T> {
|
|
197
|
+
return value !== null && value !== undefined;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
const filtered = items.filter(isNonNull);
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Brand Types
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// Create distinct types for same underlying type
|
|
207
|
+
type UserId = string & { readonly brand: unique symbol };
|
|
208
|
+
type PostId = string & { readonly brand: unique symbol };
|
|
209
|
+
|
|
210
|
+
function createUserId(id: string): UserId {
|
|
211
|
+
return id as UserId;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function createPostId(id: string): PostId {
|
|
215
|
+
return id as PostId;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function getUser(id: UserId): User { ... }
|
|
219
|
+
|
|
220
|
+
const userId = createUserId('123');
|
|
221
|
+
const postId = createPostId('456');
|
|
222
|
+
|
|
223
|
+
getUser(userId); // OK
|
|
224
|
+
getUser(postId); // Error: PostId not assignable to UserId
|
|
225
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# TypeScript Guide
|
|
2
|
+
|
|
3
|
+
metadata:
|
|
4
|
+
name: typescript
|
|
5
|
+
description: TypeScript language reference documentation
|
|
6
|
+
|
|
7
|
+
source:
|
|
8
|
+
type: external
|
|
9
|
+
origin: typescriptlang.org
|
|
10
|
+
urls:
|
|
11
|
+
- https://www.typescriptlang.org/docs/handbook/
|
|
12
|
+
- https://google.github.io/styleguide/tsguide.html
|
|
13
|
+
- https://basarat.gitbook.io/typescript/
|
|
14
|
+
last_fetched: "2026-01-22"
|
|
15
|
+
|
|
16
|
+
documents:
|
|
17
|
+
- name: type-system
|
|
18
|
+
path: ./type-system.md
|
|
19
|
+
description: TypeScript type system fundamentals
|
|
20
|
+
|
|
21
|
+
- name: advanced-types
|
|
22
|
+
path: ./advanced-types.md
|
|
23
|
+
description: Advanced TypeScript type patterns
|
|
24
|
+
|
|
25
|
+
used_by:
|
|
26
|
+
- typescript-expert
|
package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# TypeScript Type System
|
|
2
|
+
|
|
3
|
+
> Reference for TypeScript type fundamentals
|
|
4
|
+
|
|
5
|
+
## Basic Types
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// Primitives
|
|
9
|
+
const name: string = 'TypeScript';
|
|
10
|
+
const version: number = 5.0;
|
|
11
|
+
const isActive: boolean = true;
|
|
12
|
+
|
|
13
|
+
// Arrays
|
|
14
|
+
const numbers: number[] = [1, 2, 3];
|
|
15
|
+
const items: Array<string> = ['a', 'b', 'c'];
|
|
16
|
+
|
|
17
|
+
// Tuples
|
|
18
|
+
const pair: [string, number] = ['key', 42];
|
|
19
|
+
|
|
20
|
+
// Enums
|
|
21
|
+
enum Status {
|
|
22
|
+
Pending = 'pending',
|
|
23
|
+
Active = 'active',
|
|
24
|
+
Completed = 'completed',
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Any and Unknown
|
|
28
|
+
const flexible: any = 'anything';
|
|
29
|
+
const safe: unknown = 'must narrow';
|
|
30
|
+
|
|
31
|
+
// Void and Never
|
|
32
|
+
function log(message: string): void {
|
|
33
|
+
console.log(message);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function fail(message: string): never {
|
|
37
|
+
throw new Error(message);
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Interfaces
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
interface User {
|
|
45
|
+
readonly id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
email: string;
|
|
48
|
+
age?: number; // optional
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Extending interfaces
|
|
52
|
+
interface Admin extends User {
|
|
53
|
+
permissions: string[];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// Implementing interfaces
|
|
57
|
+
class UserImpl implements User {
|
|
58
|
+
readonly id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
email: string;
|
|
61
|
+
|
|
62
|
+
constructor(id: string, name: string, email: string) {
|
|
63
|
+
this.id = id;
|
|
64
|
+
this.name = name;
|
|
65
|
+
this.email = email;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Type Aliases
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
// Union types
|
|
74
|
+
type Status = 'pending' | 'active' | 'completed';
|
|
75
|
+
|
|
76
|
+
// Intersection types
|
|
77
|
+
type Employee = User & { department: string };
|
|
78
|
+
|
|
79
|
+
// Function types
|
|
80
|
+
type Handler = (event: Event) => void;
|
|
81
|
+
|
|
82
|
+
// Object types
|
|
83
|
+
type Point = {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
};
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Generics
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// Generic function
|
|
93
|
+
function identity<T>(arg: T): T {
|
|
94
|
+
return arg;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Generic interface
|
|
98
|
+
interface Container<T> {
|
|
99
|
+
value: T;
|
|
100
|
+
getValue(): T;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Generic class
|
|
104
|
+
class Box<T> {
|
|
105
|
+
private content: T;
|
|
106
|
+
|
|
107
|
+
constructor(content: T) {
|
|
108
|
+
this.content = content;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
getContent(): T {
|
|
112
|
+
return this.content;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Generic constraints
|
|
117
|
+
function getLength<T extends { length: number }>(item: T): number {
|
|
118
|
+
return item.length;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Default type parameters
|
|
122
|
+
function createArray<T = string>(length: number, value: T): T[] {
|
|
123
|
+
return Array(length).fill(value);
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Type Guards
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// typeof guard
|
|
131
|
+
function processValue(value: string | number) {
|
|
132
|
+
if (typeof value === 'string') {
|
|
133
|
+
console.log(value.toUpperCase());
|
|
134
|
+
} else {
|
|
135
|
+
console.log(value.toFixed(2));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// instanceof guard
|
|
140
|
+
function handleError(error: unknown) {
|
|
141
|
+
if (error instanceof Error) {
|
|
142
|
+
console.log(error.message);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Custom type guard
|
|
147
|
+
function isUser(obj: unknown): obj is User {
|
|
148
|
+
return (
|
|
149
|
+
typeof obj === 'object' &&
|
|
150
|
+
obj !== null &&
|
|
151
|
+
'id' in obj &&
|
|
152
|
+
'name' in obj
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// in operator
|
|
157
|
+
function processShape(shape: Circle | Square) {
|
|
158
|
+
if ('radius' in shape) {
|
|
159
|
+
console.log('Circle with radius:', shape.radius);
|
|
160
|
+
} else {
|
|
161
|
+
console.log('Square with side:', shape.side);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Literal Types
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
// String literals
|
|
170
|
+
type Direction = 'north' | 'south' | 'east' | 'west';
|
|
171
|
+
|
|
172
|
+
// Numeric literals
|
|
173
|
+
type DiceRoll = 1 | 2 | 3 | 4 | 5 | 6;
|
|
174
|
+
|
|
175
|
+
// Boolean literal
|
|
176
|
+
type Success = true;
|
|
177
|
+
|
|
178
|
+
// Template literal types
|
|
179
|
+
type EventName = `on${Capitalize<string>}`;
|
|
180
|
+
type OnClick = `on${'Click' | 'Hover'}`;
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Type Assertions
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// as syntax (preferred)
|
|
187
|
+
const input = document.getElementById('input') as HTMLInputElement;
|
|
188
|
+
|
|
189
|
+
// Angle bracket syntax
|
|
190
|
+
const input2 = <HTMLInputElement>document.getElementById('input');
|
|
191
|
+
|
|
192
|
+
// Non-null assertion
|
|
193
|
+
const element = document.getElementById('root')!;
|
|
194
|
+
|
|
195
|
+
// const assertion
|
|
196
|
+
const config = {
|
|
197
|
+
endpoint: '/api',
|
|
198
|
+
timeout: 5000,
|
|
199
|
+
} as const;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Nullability
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
// Optional property
|
|
206
|
+
interface User {
|
|
207
|
+
name: string;
|
|
208
|
+
email?: string;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// Optional chaining
|
|
212
|
+
const email = user?.email?.toLowerCase();
|
|
213
|
+
|
|
214
|
+
// Nullish coalescing
|
|
215
|
+
const displayName = user.nickname ?? user.name;
|
|
216
|
+
|
|
217
|
+
// Non-null assertion
|
|
218
|
+
const element = document.getElementById('root')!;
|
|
219
|
+
```
|