@prmichaelsen/task-mcp 0.2.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/.env.example +19 -0
- package/AGENT.md +1165 -0
- package/CHANGELOG.md +72 -0
- package/agent/commands/acp.commit.md +511 -0
- package/agent/commands/acp.init.md +376 -0
- package/agent/commands/acp.package-install.md +347 -0
- package/agent/commands/acp.proceed.md +311 -0
- package/agent/commands/acp.report.md +392 -0
- package/agent/commands/acp.status.md +280 -0
- package/agent/commands/acp.sync.md +323 -0
- package/agent/commands/acp.update.md +301 -0
- package/agent/commands/acp.validate.md +385 -0
- package/agent/commands/acp.version-check-for-updates.md +275 -0
- package/agent/commands/acp.version-check.md +190 -0
- package/agent/commands/acp.version-update.md +288 -0
- package/agent/commands/command.template.md +273 -0
- package/agent/commands/git.commit.md +511 -0
- package/agent/commands/git.init.md +513 -0
- package/agent/design/.gitkeep +0 -0
- package/agent/design/acp-task-execution-requirements.md +555 -0
- package/agent/design/api-dto-design.md +394 -0
- package/agent/design/code-extraction-guide.md +827 -0
- package/agent/design/design.template.md +136 -0
- package/agent/design/requirements.template.md +387 -0
- package/agent/design/rest-api-integration.md +489 -0
- package/agent/design/sdk-export-requirements.md +549 -0
- package/agent/milestones/.gitkeep +0 -0
- package/agent/milestones/milestone-1-{title}.template.md +206 -0
- package/agent/milestones/milestone-2-task-infrastructure.md +232 -0
- package/agent/milestones/milestone-4-autonomous-execution.md +235 -0
- package/agent/patterns/.gitkeep +0 -0
- package/agent/patterns/bootstrap.md +1271 -0
- package/agent/patterns/bootstrap.template.md +1237 -0
- package/agent/patterns/pattern.template.md +364 -0
- package/agent/progress.template.yaml +158 -0
- package/agent/progress.yaml +375 -0
- package/agent/scripts/check-for-updates.sh +88 -0
- package/agent/scripts/install.sh +157 -0
- package/agent/scripts/uninstall.sh +75 -0
- package/agent/scripts/update.sh +139 -0
- package/agent/scripts/version.sh +35 -0
- package/agent/tasks/.gitkeep +0 -0
- package/agent/tasks/task-1-{title}.template.md +225 -0
- package/agent/tasks/task-86-task-data-model-schemas.md +143 -0
- package/agent/tasks/task-87-task-database-service.md +220 -0
- package/agent/tasks/task-88-firebase-client-wrapper.md +139 -0
- package/agent/tasks/task-88-task-execution-engine.md +277 -0
- package/agent/tasks/task-89-mcp-server-implementation.md +197 -0
- package/agent/tasks/task-90-build-configuration.md +146 -0
- package/agent/tasks/task-91-deployment-configuration.md +128 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +191 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +191 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/src/client.ts.html +1030 -0
- package/coverage/lcov-report/src/constant/collections.ts.html +469 -0
- package/coverage/lcov-report/src/constant/index.html +116 -0
- package/coverage/lcov-report/src/dto/index.html +116 -0
- package/coverage/lcov-report/src/dto/transformers.ts.html +568 -0
- package/coverage/lcov-report/src/index.html +146 -0
- package/coverage/lcov-report/src/schemas/index.html +116 -0
- package/coverage/lcov-report/src/schemas/task.ts.html +547 -0
- package/coverage/lcov-report/src/server-factory.ts.html +418 -0
- package/coverage/lcov-report/src/server.ts.html +289 -0
- package/coverage/lcov-report/src/services/index.html +116 -0
- package/coverage/lcov-report/src/services/task-database.service.ts.html +1495 -0
- package/coverage/lcov-report/src/tools/index.html +236 -0
- package/coverage/lcov-report/src/tools/index.ts.html +292 -0
- package/coverage/lcov-report/src/tools/task-add-message.ts.html +277 -0
- package/coverage/lcov-report/src/tools/task-complete-task-item.ts.html +343 -0
- package/coverage/lcov-report/src/tools/task-create-milestone.ts.html +286 -0
- package/coverage/lcov-report/src/tools/task-create-task-item.ts.html +358 -0
- package/coverage/lcov-report/src/tools/task-get-next-step.ts.html +460 -0
- package/coverage/lcov-report/src/tools/task-get-status.ts.html +316 -0
- package/coverage/lcov-report/src/tools/task-report-completion.ts.html +343 -0
- package/coverage/lcov-report/src/tools/task-update-progress.ts.html +232 -0
- package/coverage/lcov.info +974 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/client.ts.html +1030 -0
- package/coverage/src/constant/collections.ts.html +469 -0
- package/coverage/src/constant/index.html +116 -0
- package/coverage/src/dto/index.html +116 -0
- package/coverage/src/dto/transformers.ts.html +568 -0
- package/coverage/src/index.html +146 -0
- package/coverage/src/schemas/index.html +116 -0
- package/coverage/src/schemas/task.ts.html +547 -0
- package/coverage/src/server-factory.ts.html +418 -0
- package/coverage/src/server.ts.html +289 -0
- package/coverage/src/services/index.html +116 -0
- package/coverage/src/services/task-database.service.ts.html +1495 -0
- package/coverage/src/tools/index.html +236 -0
- package/coverage/src/tools/index.ts.html +292 -0
- package/coverage/src/tools/task-add-message.ts.html +277 -0
- package/coverage/src/tools/task-complete-task-item.ts.html +343 -0
- package/coverage/src/tools/task-create-milestone.ts.html +286 -0
- package/coverage/src/tools/task-create-task-item.ts.html +358 -0
- package/coverage/src/tools/task-get-next-step.ts.html +460 -0
- package/coverage/src/tools/task-get-status.ts.html +316 -0
- package/coverage/src/tools/task-report-completion.ts.html +343 -0
- package/coverage/src/tools/task-update-progress.ts.html +232 -0
- package/firestore.rules +95 -0
- package/jest.config.js +31 -0
- package/package.json +67 -0
- package/src/client.spec.ts +199 -0
- package/src/client.ts +315 -0
- package/src/constant/collections.ts +128 -0
- package/src/dto/index.ts +47 -0
- package/src/dto/task-api.dto.ts +219 -0
- package/src/dto/transformers.spec.ts +462 -0
- package/src/dto/transformers.ts +161 -0
- package/src/schemas/task.ts +154 -0
- package/src/server-factory.spec.ts +70 -0
- package/src/server-factory.ts +111 -0
- package/src/server.ts +68 -0
- package/src/services/task-database.service.e2e.ts +116 -0
- package/src/services/task-database.service.spec.ts +479 -0
- package/src/services/task-database.service.ts +470 -0
- package/src/test-schemas.ts +161 -0
- package/src/tools/index.ts +69 -0
- package/src/tools/task-add-message.ts +64 -0
- package/src/tools/task-complete-task-item.ts +86 -0
- package/src/tools/task-create-milestone.ts +67 -0
- package/src/tools/task-create-task-item.ts +91 -0
- package/src/tools/task-get-next-step.spec.ts +136 -0
- package/src/tools/task-get-next-step.ts +125 -0
- package/src/tools/task-get-status.spec.ts +213 -0
- package/src/tools/task-get-status.ts +77 -0
- package/src/tools/task-report-completion.ts +86 -0
- package/src/tools/task-update-progress.ts +49 -0
- package/src/tools/tools.spec.ts +194 -0
- package/tsconfig.json +31 -0
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
# Command: init
|
|
2
|
+
|
|
3
|
+
> **🤖 Agent Directive**: If you are reading this file, the command `@git.init` has been invoked. Follow the steps below to execute this command.
|
|
4
|
+
|
|
5
|
+
**Namespace**: git
|
|
6
|
+
**Version**: 1.0.0
|
|
7
|
+
**Created**: 2026-02-16
|
|
8
|
+
**Last Updated**: 2026-02-16
|
|
9
|
+
**Status**: Active
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
**Purpose**: Initialize a git repository with intelligent .gitignore based on project type
|
|
14
|
+
**Category**: Creation
|
|
15
|
+
**Frequency**: Once
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## What This Command Does
|
|
20
|
+
|
|
21
|
+
This command intelligently initializes a git repository for your project by:
|
|
22
|
+
1. Analyzing the project structure to detect the project type (Node.js, Python, Rust, etc.)
|
|
23
|
+
2. Running `git init` to create the repository
|
|
24
|
+
3. Creating or updating `.gitignore` with sensible defaults based on the detected project type
|
|
25
|
+
4. Ensuring dependency lock files are NOT ignored (they should be committed)
|
|
26
|
+
5. Ignoring build directories, distribution directories, and dependency installation directories
|
|
27
|
+
|
|
28
|
+
The command is smart about .gitignore - it evaluates your project to determine what should be ignored rather than using a generic template. This ensures your repository follows best practices for your specific technology stack.
|
|
29
|
+
|
|
30
|
+
**Example**: "For a Node.js project, this command will detect `package.json`, initialize git, and create a `.gitignore` that ignores `node_modules/`, `dist/`, `*.tgz`, but keeps `package-lock.json` committed."
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- [ ] Project directory exists and contains project files
|
|
37
|
+
- [ ] Git is installed on the system
|
|
38
|
+
- [ ] No existing `.git` directory (or you want to reinitialize)
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Steps
|
|
43
|
+
|
|
44
|
+
### 1. Evaluate Project Type
|
|
45
|
+
|
|
46
|
+
Analyze the project structure to determine the technology stack and project type.
|
|
47
|
+
|
|
48
|
+
**Actions**:
|
|
49
|
+
- Check for `package.json` (Node.js/npm)
|
|
50
|
+
- Check for `pyproject.toml`, `setup.py`, `requirements.txt` (Python)
|
|
51
|
+
- Check for `Cargo.toml` (Rust)
|
|
52
|
+
- Check for `pom.xml`, `build.gradle` (Java)
|
|
53
|
+
- Check for `go.mod` (Go)
|
|
54
|
+
- Check for `composer.json` (PHP)
|
|
55
|
+
- Check for `.csproj`, `.sln` (C#/.NET)
|
|
56
|
+
- Check for `Gemfile` (Ruby)
|
|
57
|
+
- Identify any other project-specific files
|
|
58
|
+
|
|
59
|
+
**If Project Type is Unknown**:
|
|
60
|
+
- If the project type cannot be determined from known patterns, use available web search tools (e.g., `mcp--brave-search--brave_web_search`) to research the project structure
|
|
61
|
+
- Search for: "{detected_file_pattern} gitignore best practices"
|
|
62
|
+
- Search for: "{detected_file_pattern} project structure"
|
|
63
|
+
- Search for: "{language_or_framework} build artifacts"
|
|
64
|
+
- Use the search results to determine:
|
|
65
|
+
- What directories should be ignored (build output, dependencies)
|
|
66
|
+
- What lock files exist and should be committed
|
|
67
|
+
- What temporary files should be ignored
|
|
68
|
+
- Common IDE/editor files for that ecosystem
|
|
69
|
+
|
|
70
|
+
**Expected Outcome**: Determine the primary project type(s) and technology stack, using web research if necessary.
|
|
71
|
+
|
|
72
|
+
**Example**:
|
|
73
|
+
```bash
|
|
74
|
+
# Check for various project files
|
|
75
|
+
ls -la | grep -E "(package.json|pyproject.toml|Cargo.toml|go.mod)"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 2. Initialize Git Repository
|
|
79
|
+
|
|
80
|
+
Create the git repository if it doesn't exist.
|
|
81
|
+
|
|
82
|
+
**Actions**:
|
|
83
|
+
- Run `git init` to initialize the repository
|
|
84
|
+
- Verify `.git` directory was created
|
|
85
|
+
- Set initial branch name (typically `main` or `mainline`)
|
|
86
|
+
|
|
87
|
+
**Expected Outcome**: Git repository initialized with `.git` directory created.
|
|
88
|
+
|
|
89
|
+
**Example**:
|
|
90
|
+
```bash
|
|
91
|
+
git init
|
|
92
|
+
git branch -M main # or mainline, depending on preference
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 3. Create or Update .gitignore
|
|
96
|
+
|
|
97
|
+
Generate a `.gitignore` file with intelligent defaults based on the detected project type.
|
|
98
|
+
|
|
99
|
+
**Actions**:
|
|
100
|
+
- Create `.gitignore` if it doesn't exist, or read existing one
|
|
101
|
+
- Add project-type-specific ignore patterns
|
|
102
|
+
- Ensure dependency lock files are NOT ignored
|
|
103
|
+
- Add common ignore patterns for build/dist directories
|
|
104
|
+
- Add editor/IDE specific ignores
|
|
105
|
+
|
|
106
|
+
**Expected Outcome**: `.gitignore` file created or updated with appropriate patterns.
|
|
107
|
+
|
|
108
|
+
**Common Patterns to Include**:
|
|
109
|
+
|
|
110
|
+
#### All Projects
|
|
111
|
+
```gitignore
|
|
112
|
+
# Editor/IDE
|
|
113
|
+
.vscode/
|
|
114
|
+
.idea/
|
|
115
|
+
*.swp
|
|
116
|
+
*.swo
|
|
117
|
+
*~
|
|
118
|
+
.DS_Store
|
|
119
|
+
Thumbs.db
|
|
120
|
+
|
|
121
|
+
# Environment
|
|
122
|
+
.env
|
|
123
|
+
.env.local
|
|
124
|
+
.env.*.local
|
|
125
|
+
*.log
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Node.js/npm Projects
|
|
129
|
+
```gitignore
|
|
130
|
+
# Dependencies
|
|
131
|
+
node_modules/
|
|
132
|
+
|
|
133
|
+
# Build output
|
|
134
|
+
dist/
|
|
135
|
+
build/
|
|
136
|
+
out/
|
|
137
|
+
.next/
|
|
138
|
+
.nuxt/
|
|
139
|
+
|
|
140
|
+
# Package files (but NOT lock files)
|
|
141
|
+
*.tgz
|
|
142
|
+
|
|
143
|
+
# Testing
|
|
144
|
+
coverage/
|
|
145
|
+
.nyc_output/
|
|
146
|
+
|
|
147
|
+
# Cache
|
|
148
|
+
.npm
|
|
149
|
+
.eslintcache
|
|
150
|
+
.cache/
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### Python Projects
|
|
154
|
+
```gitignore
|
|
155
|
+
# Dependencies
|
|
156
|
+
__pycache__/
|
|
157
|
+
*.py[cod]
|
|
158
|
+
*$py.class
|
|
159
|
+
.Python
|
|
160
|
+
|
|
161
|
+
# Virtual environments
|
|
162
|
+
venv/
|
|
163
|
+
env/
|
|
164
|
+
ENV/
|
|
165
|
+
.venv
|
|
166
|
+
|
|
167
|
+
# Build output
|
|
168
|
+
dist/
|
|
169
|
+
build/
|
|
170
|
+
*.egg-info/
|
|
171
|
+
.eggs/
|
|
172
|
+
|
|
173
|
+
# Testing
|
|
174
|
+
.pytest_cache/
|
|
175
|
+
.coverage
|
|
176
|
+
htmlcov/
|
|
177
|
+
.tox/
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
#### Rust Projects
|
|
181
|
+
```gitignore
|
|
182
|
+
# Build output
|
|
183
|
+
target/
|
|
184
|
+
Cargo.lock # Only for libraries; applications should commit this
|
|
185
|
+
|
|
186
|
+
# Debug
|
|
187
|
+
**/*.rs.bk
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Go Projects
|
|
191
|
+
```gitignore
|
|
192
|
+
# Build output
|
|
193
|
+
bin/
|
|
194
|
+
*.exe
|
|
195
|
+
*.exe~
|
|
196
|
+
*.dll
|
|
197
|
+
*.so
|
|
198
|
+
*.dylib
|
|
199
|
+
|
|
200
|
+
# Test
|
|
201
|
+
*.test
|
|
202
|
+
*.out
|
|
203
|
+
|
|
204
|
+
# Vendor (if not using modules)
|
|
205
|
+
vendor/
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
#### Java Projects
|
|
209
|
+
```gitignore
|
|
210
|
+
# Build output
|
|
211
|
+
target/
|
|
212
|
+
build/
|
|
213
|
+
out/
|
|
214
|
+
*.class
|
|
215
|
+
*.jar
|
|
216
|
+
*.war
|
|
217
|
+
*.ear
|
|
218
|
+
|
|
219
|
+
# IDE
|
|
220
|
+
.gradle/
|
|
221
|
+
.settings/
|
|
222
|
+
.classpath
|
|
223
|
+
.project
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**CRITICAL**: Ensure these are NOT ignored:
|
|
227
|
+
- `package-lock.json` (Node.js)
|
|
228
|
+
- `yarn.lock` (Node.js/Yarn)
|
|
229
|
+
- `pnpm-lock.yaml` (Node.js/pnpm)
|
|
230
|
+
- `Pipfile.lock` (Python/Pipenv)
|
|
231
|
+
- `poetry.lock` (Python/Poetry)
|
|
232
|
+
- `Cargo.lock` (Rust applications)
|
|
233
|
+
- `go.sum` (Go)
|
|
234
|
+
- `composer.lock` (PHP)
|
|
235
|
+
- `Gemfile.lock` (Ruby)
|
|
236
|
+
|
|
237
|
+
### 4. Verify .gitignore
|
|
238
|
+
|
|
239
|
+
Check that the `.gitignore` file is correct and complete.
|
|
240
|
+
|
|
241
|
+
**Actions**:
|
|
242
|
+
- Read the created `.gitignore` file
|
|
243
|
+
- Verify lock files are not ignored
|
|
244
|
+
- Verify build/dist directories are ignored
|
|
245
|
+
- Verify dependency directories are ignored
|
|
246
|
+
- Check for any project-specific patterns that should be added
|
|
247
|
+
|
|
248
|
+
**Expected Outcome**: `.gitignore` file is correct and follows best practices.
|
|
249
|
+
|
|
250
|
+
### 5. Display Summary
|
|
251
|
+
|
|
252
|
+
Show what was done and what's ready to be committed.
|
|
253
|
+
|
|
254
|
+
**Actions**:
|
|
255
|
+
- Display detected project type
|
|
256
|
+
- Show `.gitignore` patterns added
|
|
257
|
+
- Run `git status` to show initial state
|
|
258
|
+
- Provide next steps
|
|
259
|
+
|
|
260
|
+
**Expected Outcome**: User understands what was initialized and what to do next.
|
|
261
|
+
|
|
262
|
+
**Example**:
|
|
263
|
+
```bash
|
|
264
|
+
git status
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Verification
|
|
270
|
+
|
|
271
|
+
- [ ] `.git` directory exists
|
|
272
|
+
- [ ] `.gitignore` file exists and contains appropriate patterns
|
|
273
|
+
- [ ] Dependency lock files are NOT in `.gitignore`
|
|
274
|
+
- [ ] Build directories (dist/, build/, target/) are in `.gitignore`
|
|
275
|
+
- [ ] Dependency install directories (node_modules/, venv/, etc.) are in `.gitignore`
|
|
276
|
+
- [ ] `git status` shows untracked files correctly
|
|
277
|
+
- [ ] No sensitive files (like `.env`) are accidentally tracked
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Expected Output
|
|
282
|
+
|
|
283
|
+
### Files Modified
|
|
284
|
+
- `.git/` - Git repository directory created
|
|
285
|
+
- `.gitignore` - Created or updated with project-specific patterns
|
|
286
|
+
|
|
287
|
+
### Console Output
|
|
288
|
+
```
|
|
289
|
+
✓ Detected project type: Node.js (npm)
|
|
290
|
+
✓ Initialized git repository
|
|
291
|
+
✓ Created .gitignore with patterns:
|
|
292
|
+
- node_modules/ (dependencies)
|
|
293
|
+
- dist/ (build output)
|
|
294
|
+
- *.tgz (package archives)
|
|
295
|
+
- .env* (environment files)
|
|
296
|
+
✓ Preserved lock files:
|
|
297
|
+
- package-lock.json (will be committed)
|
|
298
|
+
|
|
299
|
+
Next steps:
|
|
300
|
+
git add .
|
|
301
|
+
git commit -m "Initial commit"
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Status Update
|
|
305
|
+
- Git repository initialized
|
|
306
|
+
- `.gitignore` configured for project type
|
|
307
|
+
- Ready for initial commit
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Examples
|
|
312
|
+
|
|
313
|
+
### Example 1: Node.js Project
|
|
314
|
+
|
|
315
|
+
**Context**: Starting a new Node.js project with npm
|
|
316
|
+
|
|
317
|
+
**Invocation**: `@git.init`
|
|
318
|
+
|
|
319
|
+
**Result**:
|
|
320
|
+
- Detects `package.json`
|
|
321
|
+
- Initializes git repository
|
|
322
|
+
- Creates `.gitignore` with:
|
|
323
|
+
- `node_modules/` ignored
|
|
324
|
+
- `dist/`, `build/` ignored
|
|
325
|
+
- `*.tgz` ignored
|
|
326
|
+
- `package-lock.json` NOT ignored (will be committed)
|
|
327
|
+
- `.env*` ignored
|
|
328
|
+
|
|
329
|
+
### Example 2: Python Project
|
|
330
|
+
|
|
331
|
+
**Context**: Starting a Python project with Poetry
|
|
332
|
+
|
|
333
|
+
**Invocation**: `@git.init`
|
|
334
|
+
|
|
335
|
+
**Result**:
|
|
336
|
+
- Detects `pyproject.toml`
|
|
337
|
+
- Initializes git repository
|
|
338
|
+
- Creates `.gitignore` with:
|
|
339
|
+
- `__pycache__/`, `*.pyc` ignored
|
|
340
|
+
- `venv/`, `.venv/` ignored
|
|
341
|
+
- `dist/`, `build/` ignored
|
|
342
|
+
- `poetry.lock` NOT ignored (will be committed)
|
|
343
|
+
- `.env*` ignored
|
|
344
|
+
|
|
345
|
+
### Example 3: Rust Project
|
|
346
|
+
|
|
347
|
+
**Context**: Starting a Rust application
|
|
348
|
+
|
|
349
|
+
**Invocation**: `@git.init`
|
|
350
|
+
|
|
351
|
+
**Result**:
|
|
352
|
+
- Detects `Cargo.toml`
|
|
353
|
+
- Initializes git repository
|
|
354
|
+
- Creates `.gitignore` with:
|
|
355
|
+
- `target/` ignored
|
|
356
|
+
- `Cargo.lock` NOT ignored for applications (will be committed)
|
|
357
|
+
- `.env*` ignored
|
|
358
|
+
|
|
359
|
+
### Example 4: Multi-Language Project
|
|
360
|
+
|
|
361
|
+
**Context**: Project with both Node.js frontend and Python backend
|
|
362
|
+
|
|
363
|
+
**Invocation**: `@git.init`
|
|
364
|
+
|
|
365
|
+
**Result**:
|
|
366
|
+
- Detects both `package.json` and `pyproject.toml`
|
|
367
|
+
- Initializes git repository
|
|
368
|
+
- Creates `.gitignore` with patterns for both:
|
|
369
|
+
- `node_modules/` and `__pycache__/` ignored
|
|
370
|
+
- `dist/`, `build/`, `target/` ignored
|
|
371
|
+
- Both `package-lock.json` and `poetry.lock` NOT ignored
|
|
372
|
+
- `.env*` ignored
|
|
373
|
+
|
|
374
|
+
### Example 5: Unknown Project Type (Elixir)
|
|
375
|
+
|
|
376
|
+
**Context**: Starting an Elixir project with Mix
|
|
377
|
+
|
|
378
|
+
**Invocation**: `@git.init`
|
|
379
|
+
|
|
380
|
+
**Process**:
|
|
381
|
+
- Detects `mix.exs` file (unknown to built-in patterns)
|
|
382
|
+
- Uses web search: "mix.exs gitignore best practices"
|
|
383
|
+
- Finds that Elixir projects should ignore:
|
|
384
|
+
- `_build/` (build output)
|
|
385
|
+
- `deps/` (dependencies)
|
|
386
|
+
- `*.ez` (compiled archives)
|
|
387
|
+
- `mix.lock` should be committed
|
|
388
|
+
|
|
389
|
+
**Result**:
|
|
390
|
+
- Initializes git repository
|
|
391
|
+
- Creates `.gitignore` based on web research:
|
|
392
|
+
- `_build/` ignored
|
|
393
|
+
- `deps/` ignored
|
|
394
|
+
- `*.ez` ignored
|
|
395
|
+
- `mix.lock` NOT ignored (will be committed)
|
|
396
|
+
- `.env*` ignored
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Related Commands
|
|
401
|
+
|
|
402
|
+
- [`@git.commit`](git.commit.md) - Use after initialization to make your first commit
|
|
403
|
+
- [`@acp.init`](acp.init.md) - Use to initialize ACP structure after git init
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
## Troubleshooting
|
|
408
|
+
|
|
409
|
+
### Issue 1: Git already initialized
|
|
410
|
+
|
|
411
|
+
**Symptom**: Error message "Reinitialized existing Git repository"
|
|
412
|
+
|
|
413
|
+
**Cause**: `.git` directory already exists
|
|
414
|
+
|
|
415
|
+
**Solution**: This is usually fine - git will reinitialize without losing history. If you want a fresh start, delete `.git` directory first: `rm -rf .git`
|
|
416
|
+
|
|
417
|
+
### Issue 2: .gitignore conflicts with existing file
|
|
418
|
+
|
|
419
|
+
**Symptom**: `.gitignore` already exists with different patterns
|
|
420
|
+
|
|
421
|
+
**Cause**: Project already has a `.gitignore`
|
|
422
|
+
|
|
423
|
+
**Solution**: The command will merge patterns, adding new ones while preserving existing ones. Review the result and manually adjust if needed.
|
|
424
|
+
|
|
425
|
+
### Issue 3: Lock files are ignored
|
|
426
|
+
|
|
427
|
+
**Symptom**: `git status` shows lock files as ignored
|
|
428
|
+
|
|
429
|
+
**Cause**: Existing `.gitignore` has patterns that ignore lock files
|
|
430
|
+
|
|
431
|
+
**Solution**: Edit `.gitignore` and remove any lines that ignore lock files (e.g., `*.lock`, `*-lock.json`). Lock files should always be committed.
|
|
432
|
+
|
|
433
|
+
### Issue 4: Too many files shown as untracked
|
|
434
|
+
|
|
435
|
+
**Symptom**: `git status` shows hundreds of dependency files
|
|
436
|
+
|
|
437
|
+
**Cause**: Dependency directories not properly ignored
|
|
438
|
+
|
|
439
|
+
**Solution**: Verify `.gitignore` includes dependency directories for your project type. Add missing patterns manually if needed.
|
|
440
|
+
|
|
441
|
+
### Issue 5: Unknown or uncommon project type
|
|
442
|
+
|
|
443
|
+
**Symptom**: Project type cannot be automatically detected
|
|
444
|
+
|
|
445
|
+
**Cause**: Using a less common language, framework, or custom project structure
|
|
446
|
+
|
|
447
|
+
**Solution**:
|
|
448
|
+
1. The command will use web search tools to research the project type
|
|
449
|
+
2. Search queries will be constructed based on detected files (e.g., "makefile gitignore best practices")
|
|
450
|
+
3. Review the search results and manually verify the suggested patterns
|
|
451
|
+
4. If still unclear, create a minimal `.gitignore` with common patterns:
|
|
452
|
+
```gitignore
|
|
453
|
+
# Dependencies (adjust as needed)
|
|
454
|
+
vendor/
|
|
455
|
+
deps/
|
|
456
|
+
|
|
457
|
+
# Build output (adjust as needed)
|
|
458
|
+
build/
|
|
459
|
+
dist/
|
|
460
|
+
out/
|
|
461
|
+
target/
|
|
462
|
+
|
|
463
|
+
# Environment
|
|
464
|
+
.env
|
|
465
|
+
.env.local
|
|
466
|
+
|
|
467
|
+
# Editor
|
|
468
|
+
.vscode/
|
|
469
|
+
.idea/
|
|
470
|
+
```
|
|
471
|
+
5. Refine the `.gitignore` as you learn more about the project's build process
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Security Considerations
|
|
476
|
+
|
|
477
|
+
### File Access
|
|
478
|
+
- **Reads**: Project root directory to detect project type
|
|
479
|
+
- **Writes**: `.git/` directory (git repository), `.gitignore` file
|
|
480
|
+
- **Executes**: `git init` command
|
|
481
|
+
|
|
482
|
+
### Network Access
|
|
483
|
+
- **APIs**: May use web search APIs (e.g., Brave Search) to research unknown project types
|
|
484
|
+
- **Repositories**: None
|
|
485
|
+
|
|
486
|
+
### Sensitive Data
|
|
487
|
+
- **Secrets**: Automatically ignores `.env` files and environment-specific files
|
|
488
|
+
- **Credentials**: Does not access any credentials
|
|
489
|
+
- **Important**: Always verify `.env` files are in `.gitignore` before committing
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## Notes
|
|
494
|
+
|
|
495
|
+
- Lock files (package-lock.json, poetry.lock, etc.) should ALWAYS be committed to ensure reproducible builds
|
|
496
|
+
- Build directories (dist/, build/, target/) should ALWAYS be ignored - they can be regenerated
|
|
497
|
+
- Dependency directories (node_modules/, venv/) should ALWAYS be ignored - they can be reinstalled
|
|
498
|
+
- `.tgz` files should be ignored for npm packages to avoid committing packed archives
|
|
499
|
+
- Environment files (`.env`, `.env.local`) should ALWAYS be ignored to prevent credential leaks
|
|
500
|
+
- The command is idempotent - running it multiple times is safe
|
|
501
|
+
- For monorepos, consider running this at the root and adding workspace-specific patterns
|
|
502
|
+
- Always review the generated `.gitignore` to ensure it matches your project's needs
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
**Namespace**: git
|
|
507
|
+
**Command**: init
|
|
508
|
+
**Version**: 1.0.0
|
|
509
|
+
**Created**: 2026-02-16
|
|
510
|
+
**Last Updated**: 2026-02-16
|
|
511
|
+
**Status**: Active
|
|
512
|
+
**Compatibility**: ACP 1.3.0+
|
|
513
|
+
**Author**: Agent Context Protocol
|
|
File without changes
|