workspace-architect 1.5.45 → 1.7.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 +46 -8
- package/assets-manifest.json +482 -2
- package/bin/cli.js +138 -9
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -22,6 +22,8 @@ No installation required! Use directly with `npx`:
|
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
npx workspace-architect list
|
|
25
|
+
# or use the shorter alias
|
|
26
|
+
npx wsa list
|
|
25
27
|
```
|
|
26
28
|
|
|
27
29
|
Or install globally if you prefer:
|
|
@@ -36,18 +38,24 @@ List all available assets:
|
|
|
36
38
|
|
|
37
39
|
```bash
|
|
38
40
|
npx workspace-architect list
|
|
41
|
+
# or use the shorter alias
|
|
42
|
+
npx wsa list
|
|
39
43
|
```
|
|
40
44
|
|
|
41
45
|
Download a collection for web development:
|
|
42
46
|
|
|
43
47
|
```bash
|
|
44
48
|
npx workspace-architect download collections:web-frontend-development
|
|
49
|
+
# or
|
|
50
|
+
npx wsa download collections:web-frontend-development
|
|
45
51
|
```
|
|
46
52
|
|
|
47
53
|
Download a specific agent:
|
|
48
54
|
|
|
49
55
|
```bash
|
|
50
56
|
npx workspace-architect download agents:azure-architect
|
|
57
|
+
# or
|
|
58
|
+
npx wsa download agents:azure-architect
|
|
51
59
|
```
|
|
52
60
|
|
|
53
61
|
## Usage
|
|
@@ -59,12 +67,14 @@ View all available assets or filter by type:
|
|
|
59
67
|
```bash
|
|
60
68
|
# List all assets
|
|
61
69
|
npx workspace-architect list
|
|
70
|
+
# or
|
|
71
|
+
npx wsa list
|
|
62
72
|
|
|
63
73
|
# List specific types
|
|
64
74
|
npx workspace-architect list instructions
|
|
65
|
-
npx
|
|
66
|
-
npx
|
|
67
|
-
npx
|
|
75
|
+
npx wsa list agents
|
|
76
|
+
npx wsa list prompts
|
|
77
|
+
npx wsa list collections
|
|
68
78
|
```
|
|
69
79
|
|
|
70
80
|
### Downloading Assets
|
|
@@ -73,19 +83,21 @@ Download assets to your project (default location: `.github/<type>/`):
|
|
|
73
83
|
|
|
74
84
|
```bash
|
|
75
85
|
npx workspace-architect download <type>:<name>
|
|
86
|
+
# or
|
|
87
|
+
npx wsa download <type>:<name>
|
|
76
88
|
```
|
|
77
89
|
|
|
78
90
|
**Examples:**
|
|
79
91
|
|
|
80
92
|
```bash
|
|
81
93
|
# Download an instruction
|
|
82
|
-
npx
|
|
94
|
+
npx wsa download instructions:reactjs
|
|
83
95
|
|
|
84
96
|
# Download an agent
|
|
85
|
-
npx
|
|
97
|
+
npx wsa download agents:planner
|
|
86
98
|
|
|
87
99
|
# Download a complete collection
|
|
88
|
-
npx
|
|
100
|
+
npx wsa download collections:devops-essentials
|
|
89
101
|
```
|
|
90
102
|
|
|
91
103
|
### CLI Options
|
|
@@ -96,15 +108,38 @@ npx workspace-architect download collections:devops-essentials
|
|
|
96
108
|
|
|
97
109
|
## Asset Types
|
|
98
110
|
|
|
99
|
-
Workspace Architect provides
|
|
111
|
+
Workspace Architect provides five types of assets:
|
|
100
112
|
|
|
101
113
|
| Type | Description | Location |
|
|
102
114
|
|------|-------------|----------|
|
|
103
115
|
| **Instructions** | System-level guidelines for Copilot context | `.github/copilot-instructions.md` |
|
|
104
116
|
| **Prompts** | Reusable templates for specific tasks | `.github/prompts/` |
|
|
105
117
|
| **Agents** | Specialized personas defining Copilot behavior | `.github/agents/` |
|
|
118
|
+
| **Skills** | Claude Skills with templates, scripts, and resources | `.github/skills/` |
|
|
106
119
|
| **Collections** | Bundled assets for specific domains or workflows | Multiple locations |
|
|
107
120
|
|
|
121
|
+
### What are Skills?
|
|
122
|
+
|
|
123
|
+
**Skills** are an emerging standard for packaging AI agent capabilities. Compatible with Claude, GitHub Copilot, and other AI platforms, Skills are folder-based assets containing:
|
|
124
|
+
|
|
125
|
+
- **SKILL.md**: Main instructions with metadata
|
|
126
|
+
- **Templates**: Document or code templates
|
|
127
|
+
- **Scripts**: Automation scripts (downloaded but not executed)
|
|
128
|
+
- **Resources**: Reference materials and examples
|
|
129
|
+
|
|
130
|
+
Skills follow the [open Agent Skills specification](https://agentskills.io/) and work across multiple AI platforms.
|
|
131
|
+
|
|
132
|
+
**Example:**
|
|
133
|
+
```bash
|
|
134
|
+
# Download a Skill
|
|
135
|
+
npx workspace-architect download skills:example-planner
|
|
136
|
+
|
|
137
|
+
# List all Skills
|
|
138
|
+
npx workspace-architect list skills
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
For more information, see [Skills User Guide](docs/skills-guide.md) and [Skills vs Agents](docs/skills-vs-agents.md).
|
|
142
|
+
|
|
108
143
|
## Roadmap
|
|
109
144
|
|
|
110
145
|
See [ROADMAP.md](ROADMAP.md) for our development timeline, upcoming features, and current capabilities.
|
|
@@ -169,7 +204,9 @@ Create a JSON file in `assets/collections/`:
|
|
|
169
204
|
- `npm run analyze` - Analyze collections with TF-IDF/Cosine Similarity
|
|
170
205
|
- `npm run analyze -- --add` - Auto-add high-confidence matches
|
|
171
206
|
- `npm run analyze -- --remove` - Remove low-confidence items
|
|
172
|
-
- `npm run fetch-upstream` - Sync from upstream repository
|
|
207
|
+
- `npm run fetch-upstream` - Sync agents, instructions, prompts, and collections from upstream repository
|
|
208
|
+
- `npm run sync-skills` - Sync skills from anthropics/skills repository
|
|
209
|
+
- `npm run validate-skills` - Validate all synced skills
|
|
173
210
|
|
|
174
211
|
### Local Testing
|
|
175
212
|
|
|
@@ -182,6 +219,7 @@ npm run start:registry
|
|
|
182
219
|
# Terminal 2: Publish and test
|
|
183
220
|
npm run publish:local
|
|
184
221
|
npx --registry http://localhost:4873 workspace-architect list
|
|
222
|
+
npx --registry http://localhost:4873 wsa list
|
|
185
223
|
```
|
|
186
224
|
|
|
187
225
|
## Project Structure
|
package/assets-manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"generatedAt": "
|
|
2
|
+
"version": "1.1.0",
|
|
3
|
+
"generatedAt": "2026-01-08T01:49:58.572Z",
|
|
4
4
|
"assets": {
|
|
5
5
|
"agents:4.1-Beast": {
|
|
6
6
|
"path": "assets/agents/4.1-Beast.agent.md",
|
|
@@ -770,6 +770,12 @@
|
|
|
770
770
|
"title": "a11y",
|
|
771
771
|
"type": "instructions"
|
|
772
772
|
},
|
|
773
|
+
"instructions:agents": {
|
|
774
|
+
"path": "assets/instructions/agents.instructions.md",
|
|
775
|
+
"description": "Guidelines for creating custom agent files for GitHub Copilot",
|
|
776
|
+
"title": "agents",
|
|
777
|
+
"type": "instructions"
|
|
778
|
+
},
|
|
773
779
|
"instructions:ai-prompt-engineering-safety-best-practices": {
|
|
774
780
|
"path": "assets/instructions/ai-prompt-engineering-safety-best-practices.instructions.md",
|
|
775
781
|
"description": "Comprehensive best practices for AI prompt engineering, safety frameworks, bias mitigation, and responsible AI usage for Copilot and LLMs.",
|
|
@@ -2687,6 +2693,15 @@
|
|
|
2687
2693
|
"prompts:suggest-awesome-github-copilot-prompts"
|
|
2688
2694
|
]
|
|
2689
2695
|
},
|
|
2696
|
+
"collections:claude-skills-starter": {
|
|
2697
|
+
"path": "assets/collections/claude-skills-starter.json",
|
|
2698
|
+
"description": "Essential Claude Skills for software development, planning, and automation workflows.",
|
|
2699
|
+
"title": "Claude Skills Starter Pack",
|
|
2700
|
+
"type": "collections",
|
|
2701
|
+
"items": [
|
|
2702
|
+
"skills:example-planner"
|
|
2703
|
+
]
|
|
2704
|
+
},
|
|
2690
2705
|
"collections:cpp-development": {
|
|
2691
2706
|
"path": "assets/collections/cpp-development.json",
|
|
2692
2707
|
"description": "C++ programming language resources.",
|
|
@@ -3891,6 +3906,471 @@
|
|
|
3891
3906
|
"instructions:java-mcp-server",
|
|
3892
3907
|
"instructions:typescript-5-es2022"
|
|
3893
3908
|
]
|
|
3909
|
+
},
|
|
3910
|
+
"skills:algorithmic-art": {
|
|
3911
|
+
"path": "assets/skills/algorithmic-art",
|
|
3912
|
+
"description": "Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.",
|
|
3913
|
+
"title": "algorithmic-art",
|
|
3914
|
+
"type": "skills",
|
|
3915
|
+
"files": [
|
|
3916
|
+
"LICENSE.txt",
|
|
3917
|
+
"SKILL.md",
|
|
3918
|
+
"templates/generator_template.js",
|
|
3919
|
+
"templates/viewer.html"
|
|
3920
|
+
],
|
|
3921
|
+
"metadata": {
|
|
3922
|
+
"license": "Complete terms in LICENSE.txt"
|
|
3923
|
+
}
|
|
3924
|
+
},
|
|
3925
|
+
"skills:brand-guidelines": {
|
|
3926
|
+
"path": "assets/skills/brand-guidelines",
|
|
3927
|
+
"description": "Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.",
|
|
3928
|
+
"title": "brand-guidelines",
|
|
3929
|
+
"type": "skills",
|
|
3930
|
+
"files": [
|
|
3931
|
+
"LICENSE.txt",
|
|
3932
|
+
"SKILL.md"
|
|
3933
|
+
],
|
|
3934
|
+
"metadata": {
|
|
3935
|
+
"license": "Complete terms in LICENSE.txt"
|
|
3936
|
+
}
|
|
3937
|
+
},
|
|
3938
|
+
"skills:canvas-design": {
|
|
3939
|
+
"path": "assets/skills/canvas-design",
|
|
3940
|
+
"description": "Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.",
|
|
3941
|
+
"title": "canvas-design",
|
|
3942
|
+
"type": "skills",
|
|
3943
|
+
"files": [
|
|
3944
|
+
"LICENSE.txt",
|
|
3945
|
+
"SKILL.md",
|
|
3946
|
+
"canvas-fonts/ArsenalSC-OFL.txt",
|
|
3947
|
+
"canvas-fonts/ArsenalSC-Regular.ttf",
|
|
3948
|
+
"canvas-fonts/BigShoulders-Bold.ttf",
|
|
3949
|
+
"canvas-fonts/BigShoulders-OFL.txt",
|
|
3950
|
+
"canvas-fonts/BigShoulders-Regular.ttf",
|
|
3951
|
+
"canvas-fonts/Boldonse-OFL.txt",
|
|
3952
|
+
"canvas-fonts/Boldonse-Regular.ttf",
|
|
3953
|
+
"canvas-fonts/BricolageGrotesque-Bold.ttf",
|
|
3954
|
+
"canvas-fonts/BricolageGrotesque-OFL.txt",
|
|
3955
|
+
"canvas-fonts/BricolageGrotesque-Regular.ttf",
|
|
3956
|
+
"canvas-fonts/CrimsonPro-Bold.ttf",
|
|
3957
|
+
"canvas-fonts/CrimsonPro-Italic.ttf",
|
|
3958
|
+
"canvas-fonts/CrimsonPro-OFL.txt",
|
|
3959
|
+
"canvas-fonts/CrimsonPro-Regular.ttf",
|
|
3960
|
+
"canvas-fonts/DMMono-OFL.txt",
|
|
3961
|
+
"canvas-fonts/DMMono-Regular.ttf",
|
|
3962
|
+
"canvas-fonts/EricaOne-OFL.txt",
|
|
3963
|
+
"canvas-fonts/EricaOne-Regular.ttf",
|
|
3964
|
+
"canvas-fonts/GeistMono-Bold.ttf",
|
|
3965
|
+
"canvas-fonts/GeistMono-OFL.txt",
|
|
3966
|
+
"canvas-fonts/GeistMono-Regular.ttf",
|
|
3967
|
+
"canvas-fonts/Gloock-OFL.txt",
|
|
3968
|
+
"canvas-fonts/Gloock-Regular.ttf",
|
|
3969
|
+
"canvas-fonts/IBMPlexMono-Bold.ttf",
|
|
3970
|
+
"canvas-fonts/IBMPlexMono-OFL.txt",
|
|
3971
|
+
"canvas-fonts/IBMPlexMono-Regular.ttf",
|
|
3972
|
+
"canvas-fonts/IBMPlexSerif-Bold.ttf",
|
|
3973
|
+
"canvas-fonts/IBMPlexSerif-BoldItalic.ttf",
|
|
3974
|
+
"canvas-fonts/IBMPlexSerif-Italic.ttf",
|
|
3975
|
+
"canvas-fonts/IBMPlexSerif-Regular.ttf",
|
|
3976
|
+
"canvas-fonts/InstrumentSans-Bold.ttf",
|
|
3977
|
+
"canvas-fonts/InstrumentSans-BoldItalic.ttf",
|
|
3978
|
+
"canvas-fonts/InstrumentSans-Italic.ttf",
|
|
3979
|
+
"canvas-fonts/InstrumentSans-OFL.txt",
|
|
3980
|
+
"canvas-fonts/InstrumentSans-Regular.ttf",
|
|
3981
|
+
"canvas-fonts/InstrumentSerif-Italic.ttf",
|
|
3982
|
+
"canvas-fonts/InstrumentSerif-Regular.ttf",
|
|
3983
|
+
"canvas-fonts/Italiana-OFL.txt",
|
|
3984
|
+
"canvas-fonts/Italiana-Regular.ttf",
|
|
3985
|
+
"canvas-fonts/JetBrainsMono-Bold.ttf",
|
|
3986
|
+
"canvas-fonts/JetBrainsMono-OFL.txt",
|
|
3987
|
+
"canvas-fonts/JetBrainsMono-Regular.ttf",
|
|
3988
|
+
"canvas-fonts/Jura-Light.ttf",
|
|
3989
|
+
"canvas-fonts/Jura-Medium.ttf",
|
|
3990
|
+
"canvas-fonts/Jura-OFL.txt",
|
|
3991
|
+
"canvas-fonts/LibreBaskerville-OFL.txt",
|
|
3992
|
+
"canvas-fonts/LibreBaskerville-Regular.ttf",
|
|
3993
|
+
"canvas-fonts/Lora-Bold.ttf",
|
|
3994
|
+
"canvas-fonts/Lora-BoldItalic.ttf",
|
|
3995
|
+
"canvas-fonts/Lora-Italic.ttf",
|
|
3996
|
+
"canvas-fonts/Lora-OFL.txt",
|
|
3997
|
+
"canvas-fonts/Lora-Regular.ttf",
|
|
3998
|
+
"canvas-fonts/NationalPark-Bold.ttf",
|
|
3999
|
+
"canvas-fonts/NationalPark-OFL.txt",
|
|
4000
|
+
"canvas-fonts/NationalPark-Regular.ttf",
|
|
4001
|
+
"canvas-fonts/NothingYouCouldDo-OFL.txt",
|
|
4002
|
+
"canvas-fonts/NothingYouCouldDo-Regular.ttf",
|
|
4003
|
+
"canvas-fonts/Outfit-Bold.ttf",
|
|
4004
|
+
"canvas-fonts/Outfit-OFL.txt",
|
|
4005
|
+
"canvas-fonts/Outfit-Regular.ttf",
|
|
4006
|
+
"canvas-fonts/PixelifySans-Medium.ttf",
|
|
4007
|
+
"canvas-fonts/PixelifySans-OFL.txt",
|
|
4008
|
+
"canvas-fonts/PoiretOne-OFL.txt",
|
|
4009
|
+
"canvas-fonts/PoiretOne-Regular.ttf",
|
|
4010
|
+
"canvas-fonts/RedHatMono-Bold.ttf",
|
|
4011
|
+
"canvas-fonts/RedHatMono-OFL.txt",
|
|
4012
|
+
"canvas-fonts/RedHatMono-Regular.ttf",
|
|
4013
|
+
"canvas-fonts/Silkscreen-OFL.txt",
|
|
4014
|
+
"canvas-fonts/Silkscreen-Regular.ttf",
|
|
4015
|
+
"canvas-fonts/SmoochSans-Medium.ttf",
|
|
4016
|
+
"canvas-fonts/SmoochSans-OFL.txt",
|
|
4017
|
+
"canvas-fonts/Tektur-Medium.ttf",
|
|
4018
|
+
"canvas-fonts/Tektur-OFL.txt",
|
|
4019
|
+
"canvas-fonts/Tektur-Regular.ttf",
|
|
4020
|
+
"canvas-fonts/WorkSans-Bold.ttf",
|
|
4021
|
+
"canvas-fonts/WorkSans-BoldItalic.ttf",
|
|
4022
|
+
"canvas-fonts/WorkSans-Italic.ttf",
|
|
4023
|
+
"canvas-fonts/WorkSans-OFL.txt",
|
|
4024
|
+
"canvas-fonts/WorkSans-Regular.ttf",
|
|
4025
|
+
"canvas-fonts/YoungSerif-OFL.txt",
|
|
4026
|
+
"canvas-fonts/YoungSerif-Regular.ttf"
|
|
4027
|
+
],
|
|
4028
|
+
"metadata": {
|
|
4029
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4030
|
+
}
|
|
4031
|
+
},
|
|
4032
|
+
"skills:doc-coauthoring": {
|
|
4033
|
+
"path": "assets/skills/doc-coauthoring",
|
|
4034
|
+
"description": "Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.",
|
|
4035
|
+
"title": "doc-coauthoring",
|
|
4036
|
+
"type": "skills",
|
|
4037
|
+
"files": [
|
|
4038
|
+
"SKILL.md"
|
|
4039
|
+
],
|
|
4040
|
+
"metadata": {}
|
|
4041
|
+
},
|
|
4042
|
+
"skills:docx": {
|
|
4043
|
+
"path": "assets/skills/docx",
|
|
4044
|
+
"description": "Comprehensive document creation, editing, and analysis with support for tracked changes, comments, formatting preservation, and text extraction. When Claude needs to work with professional documents (.docx files) for: (1) Creating new documents, (2) Modifying or editing content, (3) Working with tracked changes, (4) Adding comments, or any other document tasks",
|
|
4045
|
+
"title": "docx",
|
|
4046
|
+
"type": "skills",
|
|
4047
|
+
"files": [
|
|
4048
|
+
"LICENSE.txt",
|
|
4049
|
+
"SKILL.md",
|
|
4050
|
+
"docx-js.md",
|
|
4051
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd",
|
|
4052
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd",
|
|
4053
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd",
|
|
4054
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd",
|
|
4055
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd",
|
|
4056
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd",
|
|
4057
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd",
|
|
4058
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd",
|
|
4059
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd",
|
|
4060
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd",
|
|
4061
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd",
|
|
4062
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd",
|
|
4063
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd",
|
|
4064
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd",
|
|
4065
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd",
|
|
4066
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd",
|
|
4067
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd",
|
|
4068
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd",
|
|
4069
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd",
|
|
4070
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd",
|
|
4071
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd",
|
|
4072
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd",
|
|
4073
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd",
|
|
4074
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd",
|
|
4075
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd",
|
|
4076
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd",
|
|
4077
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd",
|
|
4078
|
+
"ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd",
|
|
4079
|
+
"ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd",
|
|
4080
|
+
"ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd",
|
|
4081
|
+
"ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd",
|
|
4082
|
+
"ooxml/schemas/mce/mc.xsd",
|
|
4083
|
+
"ooxml/schemas/microsoft/wml-2010.xsd",
|
|
4084
|
+
"ooxml/schemas/microsoft/wml-2012.xsd",
|
|
4085
|
+
"ooxml/schemas/microsoft/wml-2018.xsd",
|
|
4086
|
+
"ooxml/schemas/microsoft/wml-cex-2018.xsd",
|
|
4087
|
+
"ooxml/schemas/microsoft/wml-cid-2016.xsd",
|
|
4088
|
+
"ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd",
|
|
4089
|
+
"ooxml/schemas/microsoft/wml-symex-2015.xsd",
|
|
4090
|
+
"ooxml/scripts/pack.py",
|
|
4091
|
+
"ooxml/scripts/unpack.py",
|
|
4092
|
+
"ooxml/scripts/validate.py",
|
|
4093
|
+
"ooxml/scripts/validation/__init__.py",
|
|
4094
|
+
"ooxml/scripts/validation/base.py",
|
|
4095
|
+
"ooxml/scripts/validation/docx.py",
|
|
4096
|
+
"ooxml/scripts/validation/pptx.py",
|
|
4097
|
+
"ooxml/scripts/validation/redlining.py",
|
|
4098
|
+
"ooxml.md",
|
|
4099
|
+
"scripts/__init__.py",
|
|
4100
|
+
"scripts/document.py",
|
|
4101
|
+
"scripts/templates/comments.xml",
|
|
4102
|
+
"scripts/templates/commentsExtended.xml",
|
|
4103
|
+
"scripts/templates/commentsExtensible.xml",
|
|
4104
|
+
"scripts/templates/commentsIds.xml",
|
|
4105
|
+
"scripts/templates/people.xml",
|
|
4106
|
+
"scripts/utilities.py"
|
|
4107
|
+
],
|
|
4108
|
+
"metadata": {
|
|
4109
|
+
"license": "Proprietary. LICENSE.txt has complete terms"
|
|
4110
|
+
}
|
|
4111
|
+
},
|
|
4112
|
+
"skills:example-planner": {
|
|
4113
|
+
"path": "assets/skills/example-planner",
|
|
4114
|
+
"description": "Create detailed implementation plans for software features and refactoring tasks. Use this skill when planning new features, architectural changes, or major refactoring efforts.",
|
|
4115
|
+
"title": "example-planner",
|
|
4116
|
+
"type": "skills",
|
|
4117
|
+
"files": [
|
|
4118
|
+
"SKILL.md"
|
|
4119
|
+
],
|
|
4120
|
+
"metadata": {
|
|
4121
|
+
"version": "1.0.0",
|
|
4122
|
+
"maintainer": "workspace-architect",
|
|
4123
|
+
"category": "planning",
|
|
4124
|
+
"license": "MIT"
|
|
4125
|
+
}
|
|
4126
|
+
},
|
|
4127
|
+
"skills:frontend-design": {
|
|
4128
|
+
"path": "assets/skills/frontend-design",
|
|
4129
|
+
"description": "Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.",
|
|
4130
|
+
"title": "frontend-design",
|
|
4131
|
+
"type": "skills",
|
|
4132
|
+
"files": [
|
|
4133
|
+
"LICENSE.txt",
|
|
4134
|
+
"SKILL.md"
|
|
4135
|
+
],
|
|
4136
|
+
"metadata": {
|
|
4137
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4138
|
+
}
|
|
4139
|
+
},
|
|
4140
|
+
"skills:internal-comms": {
|
|
4141
|
+
"path": "assets/skills/internal-comms",
|
|
4142
|
+
"description": "A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).",
|
|
4143
|
+
"title": "internal-comms",
|
|
4144
|
+
"type": "skills",
|
|
4145
|
+
"files": [
|
|
4146
|
+
"LICENSE.txt",
|
|
4147
|
+
"SKILL.md",
|
|
4148
|
+
"examples/3p-updates.md",
|
|
4149
|
+
"examples/company-newsletter.md",
|
|
4150
|
+
"examples/faq-answers.md",
|
|
4151
|
+
"examples/general-comms.md"
|
|
4152
|
+
],
|
|
4153
|
+
"metadata": {
|
|
4154
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4155
|
+
}
|
|
4156
|
+
},
|
|
4157
|
+
"skills:mcp-builder": {
|
|
4158
|
+
"path": "assets/skills/mcp-builder",
|
|
4159
|
+
"description": "Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node/TypeScript (MCP SDK).",
|
|
4160
|
+
"title": "mcp-builder",
|
|
4161
|
+
"type": "skills",
|
|
4162
|
+
"files": [
|
|
4163
|
+
"LICENSE.txt",
|
|
4164
|
+
"SKILL.md",
|
|
4165
|
+
"reference/evaluation.md",
|
|
4166
|
+
"reference/mcp_best_practices.md",
|
|
4167
|
+
"reference/node_mcp_server.md",
|
|
4168
|
+
"reference/python_mcp_server.md",
|
|
4169
|
+
"scripts/connections.py",
|
|
4170
|
+
"scripts/evaluation.py",
|
|
4171
|
+
"scripts/example_evaluation.xml",
|
|
4172
|
+
"scripts/requirements.txt"
|
|
4173
|
+
],
|
|
4174
|
+
"metadata": {
|
|
4175
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4176
|
+
}
|
|
4177
|
+
},
|
|
4178
|
+
"skills:pdf": {
|
|
4179
|
+
"path": "assets/skills/pdf",
|
|
4180
|
+
"description": "Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.",
|
|
4181
|
+
"title": "pdf",
|
|
4182
|
+
"type": "skills",
|
|
4183
|
+
"files": [
|
|
4184
|
+
"LICENSE.txt",
|
|
4185
|
+
"SKILL.md",
|
|
4186
|
+
"forms.md",
|
|
4187
|
+
"reference.md",
|
|
4188
|
+
"scripts/check_bounding_boxes.py",
|
|
4189
|
+
"scripts/check_bounding_boxes_test.py",
|
|
4190
|
+
"scripts/check_fillable_fields.py",
|
|
4191
|
+
"scripts/convert_pdf_to_images.py",
|
|
4192
|
+
"scripts/create_validation_image.py",
|
|
4193
|
+
"scripts/extract_form_field_info.py",
|
|
4194
|
+
"scripts/fill_fillable_fields.py",
|
|
4195
|
+
"scripts/fill_pdf_form_with_annotations.py"
|
|
4196
|
+
],
|
|
4197
|
+
"metadata": {
|
|
4198
|
+
"license": "Proprietary. LICENSE.txt has complete terms"
|
|
4199
|
+
}
|
|
4200
|
+
},
|
|
4201
|
+
"skills:pptx": {
|
|
4202
|
+
"path": "assets/skills/pptx",
|
|
4203
|
+
"description": "Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks",
|
|
4204
|
+
"title": "pptx",
|
|
4205
|
+
"type": "skills",
|
|
4206
|
+
"files": [
|
|
4207
|
+
"LICENSE.txt",
|
|
4208
|
+
"SKILL.md",
|
|
4209
|
+
"html2pptx.md",
|
|
4210
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd",
|
|
4211
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd",
|
|
4212
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd",
|
|
4213
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd",
|
|
4214
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd",
|
|
4215
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd",
|
|
4216
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd",
|
|
4217
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd",
|
|
4218
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd",
|
|
4219
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd",
|
|
4220
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd",
|
|
4221
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd",
|
|
4222
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd",
|
|
4223
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd",
|
|
4224
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd",
|
|
4225
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd",
|
|
4226
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd",
|
|
4227
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd",
|
|
4228
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd",
|
|
4229
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd",
|
|
4230
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd",
|
|
4231
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd",
|
|
4232
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd",
|
|
4233
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd",
|
|
4234
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd",
|
|
4235
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd",
|
|
4236
|
+
"ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd",
|
|
4237
|
+
"ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd",
|
|
4238
|
+
"ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd",
|
|
4239
|
+
"ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd",
|
|
4240
|
+
"ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd",
|
|
4241
|
+
"ooxml/schemas/mce/mc.xsd",
|
|
4242
|
+
"ooxml/schemas/microsoft/wml-2010.xsd",
|
|
4243
|
+
"ooxml/schemas/microsoft/wml-2012.xsd",
|
|
4244
|
+
"ooxml/schemas/microsoft/wml-2018.xsd",
|
|
4245
|
+
"ooxml/schemas/microsoft/wml-cex-2018.xsd",
|
|
4246
|
+
"ooxml/schemas/microsoft/wml-cid-2016.xsd",
|
|
4247
|
+
"ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd",
|
|
4248
|
+
"ooxml/schemas/microsoft/wml-symex-2015.xsd",
|
|
4249
|
+
"ooxml/scripts/pack.py",
|
|
4250
|
+
"ooxml/scripts/unpack.py",
|
|
4251
|
+
"ooxml/scripts/validate.py",
|
|
4252
|
+
"ooxml/scripts/validation/__init__.py",
|
|
4253
|
+
"ooxml/scripts/validation/base.py",
|
|
4254
|
+
"ooxml/scripts/validation/docx.py",
|
|
4255
|
+
"ooxml/scripts/validation/pptx.py",
|
|
4256
|
+
"ooxml/scripts/validation/redlining.py",
|
|
4257
|
+
"ooxml.md",
|
|
4258
|
+
"scripts/html2pptx.js",
|
|
4259
|
+
"scripts/inventory.py",
|
|
4260
|
+
"scripts/rearrange.py",
|
|
4261
|
+
"scripts/replace.py",
|
|
4262
|
+
"scripts/thumbnail.py"
|
|
4263
|
+
],
|
|
4264
|
+
"metadata": {
|
|
4265
|
+
"license": "Proprietary. LICENSE.txt has complete terms"
|
|
4266
|
+
}
|
|
4267
|
+
},
|
|
4268
|
+
"skills:skill-creator": {
|
|
4269
|
+
"path": "assets/skills/skill-creator",
|
|
4270
|
+
"description": "Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.",
|
|
4271
|
+
"title": "skill-creator",
|
|
4272
|
+
"type": "skills",
|
|
4273
|
+
"files": [
|
|
4274
|
+
"LICENSE.txt",
|
|
4275
|
+
"SKILL.md",
|
|
4276
|
+
"references/output-patterns.md",
|
|
4277
|
+
"references/workflows.md",
|
|
4278
|
+
"scripts/init_skill.py",
|
|
4279
|
+
"scripts/package_skill.py",
|
|
4280
|
+
"scripts/quick_validate.py"
|
|
4281
|
+
],
|
|
4282
|
+
"metadata": {
|
|
4283
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4284
|
+
}
|
|
4285
|
+
},
|
|
4286
|
+
"skills:slack-gif-creator": {
|
|
4287
|
+
"path": "assets/skills/slack-gif-creator",
|
|
4288
|
+
"description": "Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"",
|
|
4289
|
+
"title": "slack-gif-creator",
|
|
4290
|
+
"type": "skills",
|
|
4291
|
+
"files": [
|
|
4292
|
+
"LICENSE.txt",
|
|
4293
|
+
"SKILL.md",
|
|
4294
|
+
"core/easing.py",
|
|
4295
|
+
"core/frame_composer.py",
|
|
4296
|
+
"core/gif_builder.py",
|
|
4297
|
+
"core/validators.py",
|
|
4298
|
+
"requirements.txt"
|
|
4299
|
+
],
|
|
4300
|
+
"metadata": {
|
|
4301
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4302
|
+
}
|
|
4303
|
+
},
|
|
4304
|
+
"skills:theme-factory": {
|
|
4305
|
+
"path": "assets/skills/theme-factory",
|
|
4306
|
+
"description": "Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors/fonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.",
|
|
4307
|
+
"title": "theme-factory",
|
|
4308
|
+
"type": "skills",
|
|
4309
|
+
"files": [
|
|
4310
|
+
"LICENSE.txt",
|
|
4311
|
+
"SKILL.md",
|
|
4312
|
+
"theme-showcase.pdf",
|
|
4313
|
+
"themes/arctic-frost.md",
|
|
4314
|
+
"themes/botanical-garden.md",
|
|
4315
|
+
"themes/desert-rose.md",
|
|
4316
|
+
"themes/forest-canopy.md",
|
|
4317
|
+
"themes/golden-hour.md",
|
|
4318
|
+
"themes/midnight-galaxy.md",
|
|
4319
|
+
"themes/modern-minimalist.md",
|
|
4320
|
+
"themes/ocean-depths.md",
|
|
4321
|
+
"themes/sunset-boulevard.md",
|
|
4322
|
+
"themes/tech-innovation.md"
|
|
4323
|
+
],
|
|
4324
|
+
"metadata": {
|
|
4325
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4326
|
+
}
|
|
4327
|
+
},
|
|
4328
|
+
"skills:web-artifacts-builder": {
|
|
4329
|
+
"path": "assets/skills/web-artifacts-builder",
|
|
4330
|
+
"description": "Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.",
|
|
4331
|
+
"title": "web-artifacts-builder",
|
|
4332
|
+
"type": "skills",
|
|
4333
|
+
"files": [
|
|
4334
|
+
"LICENSE.txt",
|
|
4335
|
+
"SKILL.md",
|
|
4336
|
+
"scripts/bundle-artifact.sh",
|
|
4337
|
+
"scripts/init-artifact.sh",
|
|
4338
|
+
"scripts/shadcn-components.tar.gz"
|
|
4339
|
+
],
|
|
4340
|
+
"metadata": {
|
|
4341
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4342
|
+
}
|
|
4343
|
+
},
|
|
4344
|
+
"skills:webapp-testing": {
|
|
4345
|
+
"path": "assets/skills/webapp-testing",
|
|
4346
|
+
"description": "Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.",
|
|
4347
|
+
"title": "webapp-testing",
|
|
4348
|
+
"type": "skills",
|
|
4349
|
+
"files": [
|
|
4350
|
+
"LICENSE.txt",
|
|
4351
|
+
"SKILL.md",
|
|
4352
|
+
"examples/console_logging.py",
|
|
4353
|
+
"examples/element_discovery.py",
|
|
4354
|
+
"examples/static_html_automation.py",
|
|
4355
|
+
"scripts/with_server.py"
|
|
4356
|
+
],
|
|
4357
|
+
"metadata": {
|
|
4358
|
+
"license": "Complete terms in LICENSE.txt"
|
|
4359
|
+
}
|
|
4360
|
+
},
|
|
4361
|
+
"skills:xlsx": {
|
|
4362
|
+
"path": "assets/skills/xlsx",
|
|
4363
|
+
"description": "Comprehensive spreadsheet creation, editing, and analysis with support for formulas, formatting, data analysis, and visualization. When Claude needs to work with spreadsheets (.xlsx, .xlsm, .csv, .tsv, etc) for: (1) Creating new spreadsheets with formulas and formatting, (2) Reading or analyzing data, (3) Modify existing spreadsheets while preserving formulas, (4) Data analysis and visualization in spreadsheets, or (5) Recalculating formulas",
|
|
4364
|
+
"title": "xlsx",
|
|
4365
|
+
"type": "skills",
|
|
4366
|
+
"files": [
|
|
4367
|
+
"LICENSE.txt",
|
|
4368
|
+
"SKILL.md",
|
|
4369
|
+
"recalc.py"
|
|
4370
|
+
],
|
|
4371
|
+
"metadata": {
|
|
4372
|
+
"license": "Proprietary. LICENSE.txt has complete terms"
|
|
4373
|
+
}
|
|
3894
4374
|
}
|
|
3895
4375
|
}
|
|
3896
4376
|
}
|
package/bin/cli.js
CHANGED
|
@@ -17,19 +17,19 @@ const MANIFEST_PATH = path.join(ROOT_DIR, 'assets-manifest.json');
|
|
|
17
17
|
const IS_LOCAL = await fs.pathExists(ASSETS_DIR);
|
|
18
18
|
|
|
19
19
|
program
|
|
20
|
-
.name('
|
|
21
|
-
.description('CLI to download GitHub Copilot instructions, prompts, and
|
|
20
|
+
.name('workspace-architect')
|
|
21
|
+
.description('CLI to download GitHub Copilot instructions, prompts, and agents (alias: wsa)')
|
|
22
22
|
.version('1.0.0');
|
|
23
23
|
|
|
24
24
|
program
|
|
25
25
|
.command('list [type]')
|
|
26
|
-
.description('List available assets (instructions, prompts, agents, collections)')
|
|
26
|
+
.description('List available assets (instructions, prompts, agents, skills, collections)')
|
|
27
27
|
.action(async (type) => {
|
|
28
28
|
try {
|
|
29
29
|
if (type) {
|
|
30
30
|
await listAssets(type);
|
|
31
31
|
} else {
|
|
32
|
-
const types = ['instructions', 'prompts', 'agents', 'collections'];
|
|
32
|
+
const types = ['instructions', 'prompts', 'agents', 'skills', 'collections'];
|
|
33
33
|
for (const t of types) {
|
|
34
34
|
await listAssets(t);
|
|
35
35
|
}
|
|
@@ -83,13 +83,22 @@ async function listAssets(type) {
|
|
|
83
83
|
console.log(chalk.blue.bold(`\nAvailable ${type}:`));
|
|
84
84
|
for (const file of files) {
|
|
85
85
|
const filePath = path.join(dirPath, file);
|
|
86
|
+
const stat = await fs.stat(filePath);
|
|
86
87
|
let description = '';
|
|
87
88
|
|
|
88
89
|
try {
|
|
89
|
-
if (type === '
|
|
90
|
+
if (type === 'skills' && stat.isDirectory()) {
|
|
91
|
+
// For Skills, read SKILL.md from directory
|
|
92
|
+
const skillMdPath = path.join(filePath, 'SKILL.md');
|
|
93
|
+
if (await fs.pathExists(skillMdPath)) {
|
|
94
|
+
const content = await fs.readFile(skillMdPath, 'utf8');
|
|
95
|
+
const parsed = matter(content);
|
|
96
|
+
description = parsed.data.description || '';
|
|
97
|
+
}
|
|
98
|
+
} else if (type === 'collections') {
|
|
90
99
|
const content = await fs.readJson(filePath);
|
|
91
100
|
description = content.description || '';
|
|
92
|
-
} else {
|
|
101
|
+
} else if (!stat.isDirectory()) {
|
|
93
102
|
const content = await fs.readFile(filePath, 'utf8');
|
|
94
103
|
const parsed = matter(content);
|
|
95
104
|
description = parsed.data.description || '';
|
|
@@ -98,7 +107,7 @@ async function listAssets(type) {
|
|
|
98
107
|
// Ignore errors reading metadata
|
|
99
108
|
}
|
|
100
109
|
|
|
101
|
-
const name = path.parse(file).name;
|
|
110
|
+
const name = type === 'skills' && stat.isDirectory() ? file : path.parse(file).name;
|
|
102
111
|
console.log(` - ${name}${description ? ` - ${description}` : ''}`);
|
|
103
112
|
}
|
|
104
113
|
} else {
|
|
@@ -118,7 +127,8 @@ async function listAssets(type) {
|
|
|
118
127
|
|
|
119
128
|
console.log(chalk.blue.bold(`\nAvailable ${type}:`));
|
|
120
129
|
for (const asset of assets) {
|
|
121
|
-
|
|
130
|
+
const versionInfo = asset.metadata?.version ? ` (v${asset.metadata.version})` : '';
|
|
131
|
+
console.log(` - ${asset.id}${versionInfo}${asset.description ? ` - ${asset.description}` : ''}`);
|
|
122
132
|
}
|
|
123
133
|
}
|
|
124
134
|
}
|
|
@@ -130,7 +140,7 @@ async function downloadAsset(id, options) {
|
|
|
130
140
|
throw new Error('Invalid ID format. Use type:name (e.g., instructions:basic-setup)');
|
|
131
141
|
}
|
|
132
142
|
|
|
133
|
-
const validTypes = ['instructions', 'prompts', 'agents', 'collections'];
|
|
143
|
+
const validTypes = ['instructions', 'prompts', 'agents', 'skills', 'collections'];
|
|
134
144
|
if (!validTypes.includes(type)) {
|
|
135
145
|
throw new Error(`Invalid type: ${type}. Valid types are: ${validTypes.join(', ')}`);
|
|
136
146
|
}
|
|
@@ -173,6 +183,12 @@ async function downloadAsset(id, options) {
|
|
|
173
183
|
return;
|
|
174
184
|
}
|
|
175
185
|
|
|
186
|
+
// Handle Skills (multi-file folder-based assets)
|
|
187
|
+
if (type === 'skills') {
|
|
188
|
+
await downloadSkill(name, options);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
176
192
|
// Handle Single Asset
|
|
177
193
|
let content = '';
|
|
178
194
|
let fileName = '';
|
|
@@ -263,4 +279,117 @@ async function downloadAsset(id, options) {
|
|
|
263
279
|
console.log(chalk.green(`Successfully downloaded ${fileName} to ${destDir}`));
|
|
264
280
|
}
|
|
265
281
|
|
|
282
|
+
async function downloadSkill(name, options) {
|
|
283
|
+
const skillName = name;
|
|
284
|
+
let skillFiles = [];
|
|
285
|
+
let skillPath = '';
|
|
286
|
+
|
|
287
|
+
if (IS_LOCAL) {
|
|
288
|
+
// Local mode: copy from assets/skills
|
|
289
|
+
skillPath = path.join(ASSETS_DIR, 'skills', skillName);
|
|
290
|
+
|
|
291
|
+
if (!await fs.pathExists(skillPath)) {
|
|
292
|
+
throw new Error(`Skill not found: skills/${skillName}`);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Get all files in the skill directory
|
|
296
|
+
const getAllFiles = async (dir, baseDir = dir) => {
|
|
297
|
+
const files = [];
|
|
298
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
299
|
+
|
|
300
|
+
for (const entry of entries) {
|
|
301
|
+
const fullPath = path.join(dir, entry.name);
|
|
302
|
+
if (entry.isDirectory()) {
|
|
303
|
+
const subFiles = await getAllFiles(fullPath, baseDir);
|
|
304
|
+
files.push(...subFiles);
|
|
305
|
+
} else {
|
|
306
|
+
const relativePath = path.relative(baseDir, fullPath);
|
|
307
|
+
files.push({ relative: relativePath, full: fullPath });
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return files;
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
skillFiles = await getAllFiles(skillPath);
|
|
314
|
+
} else {
|
|
315
|
+
// Production mode: fetch from manifest and download from GitHub
|
|
316
|
+
const manifest = await getManifest();
|
|
317
|
+
const key = `skills:${skillName}`;
|
|
318
|
+
const asset = manifest.assets[key];
|
|
319
|
+
|
|
320
|
+
if (!asset) {
|
|
321
|
+
throw new Error(`Skill not found: ${key}`);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
skillPath = asset.path;
|
|
325
|
+
skillFiles = asset.files.map(file => ({
|
|
326
|
+
relative: file,
|
|
327
|
+
url: `https://raw.githubusercontent.com/archubbuck/workspace-architect/main/${asset.path}/${file}`
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Determine destination
|
|
332
|
+
let destDir;
|
|
333
|
+
if (options.output) {
|
|
334
|
+
destDir = path.resolve(process.cwd(), options.output);
|
|
335
|
+
} else {
|
|
336
|
+
destDir = path.join(process.cwd(), '.github', 'skills', skillName);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
if (options.dryRun) {
|
|
340
|
+
console.log(chalk.cyan(`[Dry Run] Would create skill directory at ${destDir}`));
|
|
341
|
+
for (const file of skillFiles) {
|
|
342
|
+
console.log(chalk.cyan(` Would copy: ${file.relative}`));
|
|
343
|
+
}
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Check if skill already exists
|
|
348
|
+
if (await fs.pathExists(destDir) && !options.force) {
|
|
349
|
+
const { overwrite } = await inquirer.prompt([
|
|
350
|
+
{
|
|
351
|
+
type: 'confirm',
|
|
352
|
+
name: 'overwrite',
|
|
353
|
+
message: `Skill ${skillName} already exists in ${destDir}. Overwrite?`,
|
|
354
|
+
default: false
|
|
355
|
+
}
|
|
356
|
+
]);
|
|
357
|
+
|
|
358
|
+
if (!overwrite) {
|
|
359
|
+
console.log(chalk.yellow('Operation cancelled.'));
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
console.log(chalk.blue(`Downloading skill: ${skillName}`));
|
|
365
|
+
|
|
366
|
+
// Create skill directory
|
|
367
|
+
await fs.ensureDir(destDir);
|
|
368
|
+
|
|
369
|
+
// Download/copy all files
|
|
370
|
+
for (const file of skillFiles) {
|
|
371
|
+
const destPath = path.join(destDir, file.relative);
|
|
372
|
+
const destFileDir = path.dirname(destPath);
|
|
373
|
+
await fs.ensureDir(destFileDir);
|
|
374
|
+
|
|
375
|
+
if (IS_LOCAL) {
|
|
376
|
+
// Copy from local assets
|
|
377
|
+
await fs.copyFile(file.full, destPath);
|
|
378
|
+
} else {
|
|
379
|
+
// Download from GitHub
|
|
380
|
+
const response = await fetch(file.url);
|
|
381
|
+
if (!response.ok) {
|
|
382
|
+
console.warn(chalk.yellow(`Warning: Failed to download ${file.relative}`));
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
const content = await response.text();
|
|
386
|
+
await fs.writeFile(destPath, content);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
console.log(chalk.dim(` Downloaded: ${file.relative}`));
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
console.log(chalk.green(`Successfully downloaded skill ${skillName} to ${destDir} (${skillFiles.length} files)`));
|
|
393
|
+
}
|
|
394
|
+
|
|
266
395
|
program.parse();
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "workspace-architect",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "A comprehensive library of specialized AI agents and personas for GitHub Copilot, ranging from architectural planning and specific tech stacks to advanced cognitive reasoning models.",
|
|
5
5
|
"bin": {
|
|
6
|
-
"workspace-architect": "./bin/cli.js"
|
|
6
|
+
"workspace-architect": "./bin/cli.js",
|
|
7
|
+
"wsa": "./bin/cli.js"
|
|
7
8
|
},
|
|
8
9
|
"scripts": {
|
|
9
10
|
"start:registry": "verdaccio --config verdaccio/config.yaml",
|
|
@@ -12,6 +13,8 @@
|
|
|
12
13
|
"generate-manifest": "node scripts/generate-manifest.js",
|
|
13
14
|
"prepublishOnly": "npm run generate-manifest",
|
|
14
15
|
"fetch-upstream": "node scripts/fetch-upstream-assets.js",
|
|
16
|
+
"sync-skills": "node scripts/sync-anthropic-skills.js",
|
|
17
|
+
"validate-skills": "node scripts/validate-skills.js",
|
|
15
18
|
"release": "release-it",
|
|
16
19
|
"publish:local": "npm run release && npm publish --registry http://localhost:4873"
|
|
17
20
|
},
|