Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 08:37:39 +08:00
commit 3243e06ddb
5 changed files with 198 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
{
"name": "feature-tracker",
"description": "Track feature development with Notion integration",
"version": "1.0.0",
"author": {
"name": "Lightsoft"
},
"commands": [
"./commands"
]
}

3
README.md Normal file
View File

@@ -0,0 +1,3 @@
# feature-tracker
Track feature development with Notion integration

72
commands/feature-end.md Normal file
View File

@@ -0,0 +1,72 @@
---
description: Complete feature and update Notion tracker
---
# Feature End
You are completing a feature development workflow and updating Notion tracking.
## Steps to follow:
### 1. Review Current Work
- Run `git status` to see all changes
- Check if all todos are completed (if not, ask user if they want to proceed)
- Verify tests pass (if applicable)
### 2. Ask for Notion Page
Ask the user for:
- **Notion Page ID**: The ID of the tracker entry created in feature-start
- If they don't have it, try to search for it by branch name or feature name
### 3. Commit Changes
- Stage all relevant files with `git add`
- Create a descriptive commit message following the project's convention
- Include the standard co-authored footer:
```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
```
- Commit the changes
### 4. Create Pull Request
- Push the branch to remote: `git push -u origin [branch-name]`
- Use `gh pr create` to create a pull request:
- **Title**: Clear, descriptive title
- **Body**: Include summary, changes made, and test plan
- Include Claude Code footer
- Capture the PR URL
### 5. Update Notion Tracker
Use Notion MCP tools to update the tracker page:
- **Status**: Change to "완료됨" (Completed)
- **End Time**: Current timestamp in ISO 8601 format (use JavaScript `new Date().toISOString()`)
- Use `date:End Time:start` for the property name
- Use `date:End Time:is_datetime` and set it to 1 for datetime
- Provide the current timestamp in ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ)
- **PR URL**: Add the pull request URL
- **Duration**: Will auto-calculate based on Start Time and End Time
### 6. Clean Up
- Clear the todo list using TodoWrite with empty array
- Switch back to main branch: `git checkout main`
### 7. Completion Message
Display a summary in Korean:
```
🎉 작업이 완료되었습니다!
📝 Feature: [feature name]
⏱️ 작업 시간: [calculated duration] 시간
🔗 PR: [PR URL]
📊 Notion: [link to updated Notion page]
수고하셨습니다! 🙌
```
## Important Notes:
- Always update Notion AFTER creating the PR (so you have the URL)
- If the user can't provide the Notion page ID, try to find it by searching
- Be thorough in reviewing changes before committing
- Celebrate the completion with encouraging Korean messages
- If any step fails, inform the user clearly and ask how to proceed

63
commands/feature-start.md Normal file
View File

@@ -0,0 +1,63 @@
---
description: Start a new feature and create Notion tracker
---
# Feature Start
You are starting a new feature development workflow with Notion tracking.
## Steps to follow:
### 1. Gather Information
Ask the user for:
- **Feature name**: What feature are you building?
- **Description**: Brief description of the feature
**Note**: The Notion Database ID is read from `.mcp.json` configuration file (`featureTracker.defaultDatabaseId`).
- If the database ID is not configured or is "YOUR_DATABASE_ID_HERE", ask the user to provide it and inform them they can set it in `.mcp.json` to avoid entering it every time.
- If configured, use the default database ID without asking the user.
### 2. Create Git Branch
- Create a new branch with format: `feature/[feature-name-kebab-case]`
- Switch to that branch
- Example: `git checkout -b feature/user-authentication`
### 3. Create Notion Tracker Entry
Use the Notion MCP tools to:
- Create a new page in the Feature Tracker database
- Set the following properties:
- **Feature Name**: [user provided name]
- **Status**: "작업중" (In Progress)
- **Start Time**: Current timestamp in ISO 8601 format (e.g., "2025-10-20T17:30:00+09:00" or use JavaScript `new Date().toISOString()`)
- **Branch**: The git branch name you created
- **Description**: [user provided description]
- Save the page ID for later reference
**Important**: For the Start Time property, you must use the proper format for Notion date properties:
- Use `date:Start Time:start` for the property name
- Use `date:Start Time:is_datetime` and set it to 1 for datetime
- Provide the current timestamp in ISO 8601 format (YYYY-MM-DDTHH:mm:ssZ)
### 4. Initialize Todo List
Use the TodoWrite tool to create an initial task breakdown:
- Break down the feature into logical steps
- Add at least 3-5 actionable tasks
- Mark the first task as pending
### 5. Confirmation Message
Display a summary in Korean:
```
✅ 작업을 시작합니다!
📝 Feature: [feature name]
🌿 Branch: [branch name]
📊 Notion: [link to Notion page]
할 일 목록이 생성되었습니다. 화이팅!
```
## Important Notes:
- Always create the Notion entry BEFORE starting actual development
- Store the Notion page ID in a temporary way if needed for feature-end
- Be encouraging and supportive in your messages
- Use Korean for user-facing messages

49
plugin.lock.json Normal file
View File

@@ -0,0 +1,49 @@
{
"$schema": "internal://schemas/plugin.lock.v1.json",
"pluginId": "gh:lightsoft-dev/claude-plugin-for-dev:feature-tracker",
"normalized": {
"repo": null,
"ref": "refs/tags/v20251128.0",
"commit": "e762f9ee53ba0126faa7bbe1888fe04d63dce45c",
"treeHash": "fa43ad51043762205e0d8d3b0e19a50fb115d717cdedc9310714c9196252ac09",
"generatedAt": "2025-11-28T10:20:19.343997Z",
"toolVersion": "publish_plugins.py@0.2.0"
},
"origin": {
"remote": "git@github.com:zhongweili/42plugin-data.git",
"branch": "master",
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
},
"manifest": {
"name": "feature-tracker",
"description": "Track feature development with Notion integration",
"version": "1.0.0"
},
"content": {
"files": [
{
"path": "README.md",
"sha256": "fc71e3ea46d3085295ac304966283006979bfe5137c00548bee566662150fedb"
},
{
"path": ".claude-plugin/plugin.json",
"sha256": "345132463a90bb75c19419ac785b36c2403211f0bff952d849eb38b88364d0b3"
},
{
"path": "commands/feature-end.md",
"sha256": "fbc54a968271f8c30b2acb14146168a20b7d550938fcbd71de3089bf8382f728"
},
{
"path": "commands/feature-start.md",
"sha256": "11023ef47db8c7e01fb1438fc864aa7d6e0e0d57290fcab37b039251b14aa254"
}
],
"dirSha256": "fa43ad51043762205e0d8d3b0e19a50fb115d717cdedc9310714c9196252ac09"
},
"security": {
"scannedAt": null,
"scannerVersion": null,
"flags": []
}
}