Development workflow for building the Apicurio Registry VSCode Extension. Enforces TDD, Git branching, documentation updates, and quality standards for TypeScript VSCode extension development.
Development workflow for the Apicurio Registry VSCode Extension - a VSCode extension for browsing and editing API specifications from Apicurio Registry.
Navigate and maintain these key documentation files:
**Documentation is NOT optional. It's part of completing the task.**
1. Completing a task
2. Starting a new task
3. Making architectural decisions
4. Discovering issues or blockers
5. Changing priorities
6. Weekly reviews
**Stop and update documentation before proceeding:**
1. Move task file: `tasks/in-progress/` → `tasks/completed/`
2. Add "Lessons Learned" section to task file
3. Update `docs/TODO.md`:
- Move to "Recently Completed" table
- Update progress percentages
- Update "What to Work on TODAY"
- Add entry to "Recent Activity Log"
4. Update `docs/MASTER_PLAN.md` if milestone reached
5. Confirm all updates before proceeding to next task
1. Update TODO.md "What to Work on TODAY"
2. Move task file to `in-progress/` if needed
3. Update progress bars
**ALWAYS use feature branches. NEVER commit directly to main.**
```
task/XXX-short-description
fix/bug-description
docs/documentation-update
refactor/component-name
test/feature-name
```
**1. Before Starting:**
```bash
git checkout main
git pull origin main
git checkout -b task/XXX-short-name
```
**2. During Work (commit frequently):**
```bash
git add [files]
git commit -m "feat(XXX): implement [feature]"
git push -u origin task/XXX-short-name
```
**3. Before Merging - Run Tests:**
```bash
npm run test # Unit tests
npm run lint # Linting
npm run compile # TypeScript compilation
```
**4. Merge to Main (only when tests pass):**
```bash
git checkout main
git pull origin main
git merge task/XXX-short-name
npm run test && npm run compile # Verify after merge
git push origin main
git branch -d task/XXX-short-name
```
```
<type>: <description>
[optional body]
[optional footer]
```
**Types:** feat, fix, docs, refactor, test, chore
**Example:**
```
feat: complete task 003 - context menus
Closes #003
```
```
1. RED → Write a failing test
2. GREEN → Write minimal code to pass
3. REFACTOR → Improve code while keeping tests green
```
**CRITICAL: Write tests BEFORE implementation code.**
**Phase 1: RED - Write Failing Test**
```typescript
describe('copyGroupIdCommand', () => {
it('should copy group ID to clipboard', async () => {
const mockNode = { groupId: 'test-group' };
await copyGroupIdCommand(mockNode);
expect(mockClipboard.writeText).toHaveBeenCalledWith('test-group');
});
});
```
Run: `npm run test` - it MUST fail ❌
**Phase 2: GREEN - Minimal Implementation**
```typescript
export async function copyGroupIdCommand(node: RegistryItem): Promise<void> {
await vscode.env.clipboard.writeText(node.groupId!);
}
```
Run: `npm run test` - it MUST pass ✅
**Phase 3: REFACTOR - Improve Code**
Add error handling, edge cases, and corresponding tests while keeping tests green.
```bash
npm run test # Run all tests
npm run test -- --grep "copyCommands" # Run specific test
npm run lint # Linting
npm run compile # TypeScript compilation
```
A task is NOT complete until ALL requirements are met:
**Remember: "If documentation is not updated, the task is NOT complete."**
```bash
git checkout -b task/XXX-name
npm run test # Should FAIL ❌
git add test/
git commit -m "test(XXX): add failing tests for feature"
npm run test # Should PASS ✅
git add src/
git commit -m "feat(XXX): implement feature (tests passing)"
npm run test # Should still PASS ✅
git add .
git commit -m "refactor(XXX): improve code quality"
git add docs/tasks/
git commit -m "docs(XXX): add test documentation"
git add docs/
git commit -m "docs(XXX): update documentation"
npm run test && npm run lint && npm run compile
git checkout main
git merge task/XXX-name
git push origin main
```
```bash
npm install # Install dependencies
npm run compile # Compile TypeScript
npm run watch # Watch mode
npm run test # Run tests
npm run lint # Run linter
npm run vscode:prepublish # Package extension
./test-data/scripts/test-mcp-server.sh # Validate MCP server
```
**Configuration:**
**Source:**
**Before ending work session:**
**Quality checks:**
Throughout the workflow, proactively remind the user to:
**"Documentation is not optional. It's part of completing the task."**
**"If documentation is not updated, the task is NOT complete."**
**"Tests must pass before merging to main."**
**"Always use feature branches, never commit directly to main."**
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/apicurio-vscode-plugin-development/raw