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 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 workspace-architect list agents
66
- npx workspace-architect list prompts
67
- npx workspace-architect list collections
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 workspace-architect download instructions:reactjs
94
+ npx wsa download instructions:reactjs
83
95
 
84
96
  # Download an agent
85
- npx workspace-architect download agents:planner
97
+ npx wsa download agents:planner
86
98
 
87
99
  # Download a complete collection
88
- npx workspace-architect download collections:devops-essentials
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 four types of assets:
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
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.0.0",
3
- "generatedAt": "2025-12-18T23:07:41.898Z",
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('github-copilot-packed')
21
- .description('CLI to download GitHub Copilot instructions, prompts, and chat modes')
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 === 'collections') {
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
- console.log(` - ${asset.id}${asset.description ? ` - ${asset.description}` : ''}`);
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.5.45",
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
  },