@uniswap/ai-toolkit-nx-claude 0.5.30-next.1 → 0.5.30-next.3
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 +28 -27
- package/dist/cli-generator.cjs +4 -10
- package/dist/generators/addons/CLAUDE.md +91 -91
- package/dist/generators/addons/generator.cjs +13 -338
- package/dist/generators/addons/schema.json +1 -32
- package/dist/index.cjs +25 -1180
- package/dist/packages/ai-toolkit-nx-claude/src/cli-generator.d.ts +1 -2
- package/dist/packages/ai-toolkit-nx-claude/src/cli-generator.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/addon-registry.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/generator.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/index.d.ts +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/index.d.ts.map +1 -1
- package/generators.json +0 -5
- package/package.json +2 -3
- package/dist/generators/hooks/CLAUDE.md +0 -378
- package/dist/generators/hooks/README.md +0 -220
- package/dist/generators/hooks/generator.cjs +0 -1265
- package/dist/generators/hooks/schema.json +0 -41
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts +0 -52
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts.map +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/cli-parser.d.ts +0 -2
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/cli-parser.d.ts.map +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/dependency-checker.d.ts +0 -46
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/dependency-checker.d.ts.map +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/generator.d.ts +0 -9
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/generator.d.ts.map +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/install-orchestrator.d.ts +0 -55
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/install-orchestrator.d.ts.map +0 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/repo-manager.d.ts +0 -63
- package/dist/packages/ai-toolkit-nx-claude/src/generators/hooks/repo-manager.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,58 +1,59 @@
|
|
|
1
1
|
# @uniswap/ai-toolkit-nx-claude
|
|
2
2
|
|
|
3
|
-
This package provides Nx generators for
|
|
3
|
+
This package provides Nx generators for installing Claude Code addon MCP servers. It also includes the `claude-plus` script for enhanced Claude Code startup.
|
|
4
|
+
|
|
5
|
+
> **Note**: The `init`, `add-command`, `add-agent`, and `hooks` generators have been removed. For Claude Code setup, use the marketplace-based plugin architecture instead. See the [root README.md](../../README.md) for details on installing plugins.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
7
|
-
This package is published to a private npmjs package registry and requires authentication to access. See the [root README.md file](../../README.md) for instructions on how to install it via NPM, or run it locally
|
|
9
|
+
This package is published to a private npmjs package registry and requires authentication to access. See the [root README.md file](../../README.md) for instructions on how to install it via NPM, or run it locally.
|
|
8
10
|
|
|
9
11
|
## Usage
|
|
10
12
|
|
|
11
|
-
###
|
|
13
|
+
### Interactive Menu
|
|
12
14
|
|
|
13
15
|
```bash
|
|
14
|
-
|
|
16
|
+
# Show interactive menu of available generators
|
|
17
|
+
npx @uniswap/ai-toolkit-nx-claude@latest
|
|
15
18
|
```
|
|
16
19
|
|
|
17
20
|
### Run Specific Generators
|
|
18
21
|
|
|
19
|
-
Each generator can be run directly via the desired generator's subcommand:
|
|
20
|
-
|
|
21
22
|
```bash
|
|
22
|
-
#
|
|
23
|
-
npx
|
|
24
|
-
|
|
25
|
-
# Install notification hooks
|
|
26
|
-
npx nx run @uniswap/ai-toolkit-nx-claude:nx-claude:exec hooks
|
|
27
|
-
|
|
28
|
-
# Install and configure Claude Code addons
|
|
29
|
-
npx nx run @uniswap/ai-toolkit-nx-claude:nx-claude:exec addons
|
|
30
|
-
|
|
31
|
-
# Add a new command to packages
|
|
32
|
-
npx nx run @uniswap/ai-toolkit-nx-claude:nx-claude:exec add-command
|
|
33
|
-
|
|
34
|
-
# Add a new agent to packages
|
|
35
|
-
npx nx run @uniswap/ai-toolkit-nx-claude:nx-claude:exec add-agent
|
|
23
|
+
# Install and configure Claude Code addons (MCP servers)
|
|
24
|
+
npx @uniswap/ai-toolkit-nx-claude@latest addons
|
|
36
25
|
```
|
|
37
26
|
|
|
38
27
|
### List Available Generators
|
|
39
28
|
|
|
40
29
|
```bash
|
|
41
|
-
npx
|
|
30
|
+
npx @uniswap/ai-toolkit-nx-claude@latest --list
|
|
42
31
|
```
|
|
43
32
|
|
|
44
33
|
## Available Generators
|
|
45
34
|
|
|
46
|
-
- **init** - One-shot installer for Claude Code configs
|
|
47
|
-
- **hooks** - Install Claude Code notification hooks
|
|
48
35
|
- **addons** - Install and configure Claude Code addons including MCP servers
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
|
|
37
|
+
## Standalone Script: claude-plus
|
|
38
|
+
|
|
39
|
+
Enhanced Claude Code launcher with MCP server selection and Slack token management:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Run claude-plus
|
|
43
|
+
npx -y -p @uniswap/ai-toolkit-nx-claude@latest claude-plus
|
|
44
|
+
|
|
45
|
+
# Set up as shell alias
|
|
46
|
+
alias claude-plus="npx -y -p @uniswap/ai-toolkit-nx-claude@latest claude-plus"
|
|
47
|
+
```
|
|
51
48
|
|
|
52
49
|
## Building
|
|
53
50
|
|
|
54
|
-
|
|
51
|
+
```bash
|
|
52
|
+
npx nx build ai-toolkit-nx-claude
|
|
53
|
+
```
|
|
55
54
|
|
|
56
55
|
## Testing
|
|
57
56
|
|
|
58
|
-
|
|
57
|
+
```bash
|
|
58
|
+
npx nx test ai-toolkit-nx-claude
|
|
59
|
+
```
|
package/dist/cli-generator.cjs
CHANGED
|
@@ -99,11 +99,7 @@ function shouldRunStandalone() {
|
|
|
99
99
|
async function runGeneratorDirectly(generatorName, args) {
|
|
100
100
|
try {
|
|
101
101
|
const generatorFunctionMap = {
|
|
102
|
-
|
|
103
|
-
hooks: "hooksGenerator",
|
|
104
|
-
addons: "addonsGenerator",
|
|
105
|
-
"add-command": "addCommandGenerator",
|
|
106
|
-
"add-agent": "addAgentGenerator"
|
|
102
|
+
addons: "addonsGenerator"
|
|
107
103
|
};
|
|
108
104
|
const generatorFnName = generatorFunctionMap[generatorName];
|
|
109
105
|
if (!generatorFnName) {
|
|
@@ -273,7 +269,6 @@ async function applyTreeChanges(tree) {
|
|
|
273
269
|
// packages/ai-toolkit-nx-claude/src/cli-generator.ts
|
|
274
270
|
var import_enquirer = require("enquirer");
|
|
275
271
|
var GENERATORS = {
|
|
276
|
-
hooks: "Install Claude Code notification hooks",
|
|
277
272
|
addons: "Install and configure Claude Code addons including MCP servers"
|
|
278
273
|
};
|
|
279
274
|
function getGeneratorName(args) {
|
|
@@ -290,7 +285,7 @@ function getGeneratorName(args) {
|
|
|
290
285
|
console.error(` \u2022 ${name}: ${description}`);
|
|
291
286
|
});
|
|
292
287
|
console.error(
|
|
293
|
-
"\nNote: The init
|
|
288
|
+
"\nNote: The init, hooks, and other generators have been removed. Use the marketplace-based plugin architecture instead."
|
|
294
289
|
);
|
|
295
290
|
process.exit(1);
|
|
296
291
|
}
|
|
@@ -323,10 +318,9 @@ async function main() {
|
|
|
323
318
|
console.log("\nUsage:");
|
|
324
319
|
console.log(" npx @uniswap/ai-toolkit-nx-claude@latest [generator]");
|
|
325
320
|
console.log("\nExamples:");
|
|
326
|
-
console.log(" npx @uniswap/ai-toolkit-nx-claude@latest hooks");
|
|
327
321
|
console.log(" npx @uniswap/ai-toolkit-nx-claude@latest addons");
|
|
328
322
|
console.log(
|
|
329
|
-
"\nNote: The init
|
|
323
|
+
"\nNote: The init, hooks, and other generators have been removed. Use the marketplace-based plugin architecture instead."
|
|
330
324
|
);
|
|
331
325
|
process.exit(0);
|
|
332
326
|
}
|
|
@@ -344,7 +338,7 @@ This command runs the nx-claude ${generatorName} generator.`);
|
|
|
344
338
|
console.log(" npx @uniswap/ai-toolkit-nx-claude@latest [generator]");
|
|
345
339
|
console.log("\nOptions are handled interactively during execution.");
|
|
346
340
|
console.log(
|
|
347
|
-
"\nNote: The init
|
|
341
|
+
"\nNote: The init, hooks, and other generators have been removed. Use the marketplace-based plugin architecture instead."
|
|
348
342
|
);
|
|
349
343
|
process.exit(0);
|
|
350
344
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Purpose
|
|
4
4
|
|
|
5
|
-
Nx generator for installing optional add-
|
|
5
|
+
Nx generator for installing optional MCP server add-ons to the AI Toolkit. These are MCP servers that are NOT bundled via plugins and require manual installation.
|
|
6
6
|
|
|
7
7
|
## Usage
|
|
8
8
|
|
|
@@ -11,12 +11,12 @@ Nx generator for installing optional add-on components to the AI Toolkit. Add-on
|
|
|
11
11
|
npx nx generate @uniswap/ai-toolkit-nx-claude:addons
|
|
12
12
|
|
|
13
13
|
# Install all addons
|
|
14
|
-
npx nx generate @uniswap/ai-toolkit-nx-claude:addons --
|
|
14
|
+
npx nx generate @uniswap/ai-toolkit-nx-claude:addons --selection-mode=all
|
|
15
15
|
|
|
16
16
|
# Install specific addon
|
|
17
17
|
npx nx generate @uniswap/ai-toolkit-nx-claude:addons \
|
|
18
|
-
--
|
|
19
|
-
--
|
|
18
|
+
--selection-mode=specific \
|
|
19
|
+
--addons=slack-mcp
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Options
|
|
@@ -24,7 +24,7 @@ npx nx generate @uniswap/ai-toolkit-nx-claude:addons \
|
|
|
24
24
|
### Installation Control
|
|
25
25
|
|
|
26
26
|
- `selectionMode` - Selection mode for which addons to install:
|
|
27
|
-
- `all` - Install all available addons
|
|
27
|
+
- `all` - Install all available addons (6 MCP servers)
|
|
28
28
|
- `specific` - Choose specific addons to install
|
|
29
29
|
- `addons` - Specific addons to install (when `selectionMode=specific`)
|
|
30
30
|
- `installationType` - Installation location for MCP servers:
|
|
@@ -39,28 +39,53 @@ npx nx generate @uniswap/ai-toolkit-nx-claude:addons \
|
|
|
39
39
|
|
|
40
40
|
## Available Addons
|
|
41
41
|
|
|
42
|
-
Registered in `addon-registry.ts
|
|
42
|
+
Registered in `addon-registry.ts`. These 6 MCP servers are available for manual installation:
|
|
43
43
|
|
|
44
|
-
### 1.
|
|
44
|
+
### 1. slack-mcp
|
|
45
45
|
|
|
46
|
-
**Purpose**:
|
|
46
|
+
**Purpose**: Slack workspace integration for Claude Code
|
|
47
47
|
|
|
48
48
|
**Features**:
|
|
49
49
|
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
- Steering document integration
|
|
50
|
+
- Send and receive Slack messages
|
|
51
|
+
- Search channels and conversations
|
|
52
|
+
- Manage workspace interactions
|
|
54
53
|
|
|
55
|
-
**
|
|
54
|
+
**Requires**: Slack Bot Token authentication
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
### 2. github-mcp
|
|
57
|
+
|
|
58
|
+
**Purpose**: GitHub repository integration
|
|
59
|
+
|
|
60
|
+
**Features**:
|
|
61
|
+
|
|
62
|
+
- Repository management
|
|
63
|
+
- Issue and PR interactions
|
|
64
|
+
- Code review capabilities
|
|
65
|
+
|
|
66
|
+
**Requires**: GitHub Personal Access Token (can be obtained via `gh auth token`)
|
|
67
|
+
|
|
68
|
+
### 3. figma-mcp
|
|
69
|
+
|
|
70
|
+
**Purpose**: Figma design platform integration
|
|
71
|
+
|
|
72
|
+
**Features**:
|
|
73
|
+
|
|
74
|
+
- Access design files
|
|
75
|
+
- Extract design components
|
|
76
|
+
- Translate designs to code
|
|
77
|
+
|
|
78
|
+
### 4. vercel-mcp
|
|
58
79
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
80
|
+
**Purpose**: Vercel deployment platform integration
|
|
81
|
+
|
|
82
|
+
**Features**:
|
|
62
83
|
|
|
63
|
-
|
|
84
|
+
- Deployment management
|
|
85
|
+
- Environment configuration
|
|
86
|
+
- Project monitoring
|
|
87
|
+
|
|
88
|
+
### 5. aws-log-analyzer-mcp
|
|
64
89
|
|
|
65
90
|
**Purpose**: MCP server for AWS CloudWatch log analysis
|
|
66
91
|
|
|
@@ -75,28 +100,36 @@ Registered in `addon-registry.ts`:
|
|
|
75
100
|
|
|
76
101
|
**Installation**:
|
|
77
102
|
|
|
103
|
+
- Clones the AWS Log Analyzer repository
|
|
104
|
+
- Installs Python dependencies with uv
|
|
78
105
|
- Adds MCP server configuration
|
|
79
|
-
- Prompts for AWS credentials
|
|
80
|
-
- Creates necessary configuration files
|
|
81
106
|
|
|
82
|
-
|
|
107
|
+
**Requires**: AWS credentials with CloudWatchLogsReadOnlyAccess
|
|
108
|
+
|
|
109
|
+
### 6. pulumi-mcp
|
|
83
110
|
|
|
84
|
-
**Purpose**:
|
|
111
|
+
**Purpose**: Pulumi infrastructure as code integration
|
|
85
112
|
|
|
86
113
|
**Features**:
|
|
87
114
|
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
- Auto-detect and configure servers
|
|
115
|
+
- Infrastructure management
|
|
116
|
+
- Resource state inspection
|
|
117
|
+
- Deployment automation
|
|
92
118
|
|
|
93
|
-
**
|
|
119
|
+
**Requires**: Pulumi Personal Access Token (PAT)
|
|
94
120
|
|
|
95
|
-
|
|
121
|
+
## Note on Plugin-Bundled MCP Servers
|
|
122
|
+
|
|
123
|
+
The following MCP servers are **NOT** available via this addons generator because they are bundled via plugins:
|
|
96
124
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
125
|
+
- **spec-workflow-mcp** - Available via development-planning plugin
|
|
126
|
+
- **graphite-mcp** - Available via development-pr-workflow plugin
|
|
127
|
+
- **nx-mcp** - Available via uniswap-integrations plugin
|
|
128
|
+
- **notion-mcp** - Available via uniswap-integrations plugin
|
|
129
|
+
- **linear-mcp** - Available via uniswap-integrations plugin
|
|
130
|
+
- **chrome-devtools-mcp** - Available via development-productivity plugin
|
|
131
|
+
|
|
132
|
+
To access these, install the corresponding plugin from the Claude Code Plugin Marketplace.
|
|
100
133
|
|
|
101
134
|
## Generator Flow
|
|
102
135
|
|
|
@@ -114,7 +147,7 @@ Registered in `addon-registry.ts`:
|
|
|
114
147
|
3. **Installation**:
|
|
115
148
|
|
|
116
149
|
- For each selected addon:
|
|
117
|
-
- Run addon's setup function
|
|
150
|
+
- Run addon's setup function (if any)
|
|
118
151
|
- Install MCP server using `claude mcp add` with appropriate scope:
|
|
119
152
|
- `--scope user` for global installation
|
|
120
153
|
- `--scope project` for local installation
|
|
@@ -132,69 +165,39 @@ Registered in `addon-registry.ts`:
|
|
|
132
165
|
- `schema.json` - Configuration schema with conditional prompting
|
|
133
166
|
- `schema.d.ts` - TypeScript interface
|
|
134
167
|
- `addon-registry.ts` - Registry of available addons
|
|
135
|
-
-
|
|
168
|
+
- `aws-log-analyzer-setup.ts` - AWS Log Analyzer setup implementation
|
|
169
|
+
- `claude-mcp-installer.ts` - MCP server installation utilities
|
|
136
170
|
|
|
137
171
|
## Addon Registry
|
|
138
172
|
|
|
139
173
|
The registry (`addon-registry.ts`) defines available addons:
|
|
140
174
|
|
|
141
175
|
```typescript
|
|
142
|
-
export interface
|
|
176
|
+
export interface McpServerAddon {
|
|
143
177
|
id: string;
|
|
144
178
|
name: string;
|
|
145
179
|
description: string;
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
id: 'spec-mcp-workflow',
|
|
153
|
-
name: 'Spec MCP Workflow',
|
|
154
|
-
description: 'Spec-driven development with MCP server',
|
|
155
|
-
setupFunction: setupSpecWorkflow,
|
|
156
|
-
},
|
|
157
|
-
// ... more addons
|
|
158
|
-
];
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
## Creating New Addons
|
|
162
|
-
|
|
163
|
-
### Step 1: Create Setup File
|
|
164
|
-
|
|
165
|
-
Create `{addon-name}-setup.ts`:
|
|
166
|
-
|
|
167
|
-
```typescript
|
|
168
|
-
export async function setupMyAddon(tree: Tree, options: AddonsGeneratorSchema): Promise<void> {
|
|
169
|
-
// 1. Validate prerequisites
|
|
170
|
-
// 2. Create configuration files
|
|
171
|
-
// 3. Update Claude config
|
|
172
|
-
// 4. Install dependencies
|
|
173
|
-
// 5. Provide usage instructions
|
|
180
|
+
mcp: {
|
|
181
|
+
command: string;
|
|
182
|
+
args: string[];
|
|
183
|
+
env?: Record<string, string>;
|
|
184
|
+
};
|
|
185
|
+
requirements?: string[];
|
|
174
186
|
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Step 2: Register in addon-registry.ts
|
|
178
187
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
188
|
+
export function getAvailableAddons(): McpServerAddon[] {
|
|
189
|
+
return [
|
|
190
|
+
{
|
|
191
|
+
id: 'slack-mcp',
|
|
192
|
+
name: 'Slack MCP',
|
|
193
|
+
description: 'Slack workspace integration',
|
|
194
|
+
mcp: { command: 'npx', args: ['-y', '@anthropic/slack-mcp'] },
|
|
195
|
+
},
|
|
196
|
+
// ... more addons
|
|
197
|
+
];
|
|
186
198
|
}
|
|
187
199
|
```
|
|
188
200
|
|
|
189
|
-
### Step 3: Test
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
npx nx generate @uniswap/ai-toolkit-nx-claude:addons \
|
|
193
|
-
--install-mode=specific \
|
|
194
|
-
--addon=my-addon \
|
|
195
|
-
--dry-run
|
|
196
|
-
```
|
|
197
|
-
|
|
198
201
|
## Integration with Init Generator
|
|
199
202
|
|
|
200
203
|
The addons generator supports the `installMode` pattern for programmatic invocation:
|
|
@@ -207,8 +210,6 @@ await addonsGenerator(tree, {
|
|
|
207
210
|
installationType: normalizedOptions.installationType, // 'global' or 'local'
|
|
208
211
|
force: false,
|
|
209
212
|
skipVerification: false,
|
|
210
|
-
dashboardMode: 'always',
|
|
211
|
-
port: 0,
|
|
212
213
|
});
|
|
213
214
|
```
|
|
214
215
|
|
|
@@ -234,11 +235,11 @@ Addons update `~/.claude/claude.json` (global) or `./.claude/claude.json` (local
|
|
|
234
235
|
```json
|
|
235
236
|
{
|
|
236
237
|
"mcpServers": {
|
|
237
|
-
"
|
|
238
|
-
"command": "
|
|
239
|
-
"args": ["/
|
|
238
|
+
"slack": {
|
|
239
|
+
"command": "npx",
|
|
240
|
+
"args": ["-y", "@anthropic/slack-mcp"],
|
|
240
241
|
"env": {
|
|
241
|
-
"
|
|
242
|
+
"SLACK_BOT_TOKEN": "xoxb-..."
|
|
242
243
|
}
|
|
243
244
|
}
|
|
244
245
|
}
|
|
@@ -249,7 +250,7 @@ Addons update `~/.claude/claude.json` (global) or `./.claude/claude.json` (local
|
|
|
249
250
|
|
|
250
251
|
### Addon Setup Functions
|
|
251
252
|
|
|
252
|
-
|
|
253
|
+
For addons that require special setup (like aws-log-analyzer-mcp), create a setup file:
|
|
253
254
|
|
|
254
255
|
1. **Validate Prerequisites**:
|
|
255
256
|
|
|
@@ -260,8 +261,8 @@ All setup functions follow this pattern:
|
|
|
260
261
|
2. **File Operations**:
|
|
261
262
|
|
|
262
263
|
- Create directories
|
|
263
|
-
-
|
|
264
|
-
-
|
|
264
|
+
- Clone repositories
|
|
265
|
+
- Install dependencies
|
|
265
266
|
|
|
266
267
|
3. **Configuration Updates**:
|
|
267
268
|
|
|
@@ -290,7 +291,6 @@ try {
|
|
|
290
291
|
## Related Documentation
|
|
291
292
|
|
|
292
293
|
- Parent package: `../../CLAUDE.md`
|
|
293
|
-
- Init generator (caller): `../init/CLAUDE.md`
|
|
294
294
|
- MCP server documentation: External links per addon
|
|
295
295
|
|
|
296
296
|
## Auto-Update Instructions
|