Initial commit
This commit is contained in:
11
.claude-plugin/plugin.json
Normal file
11
.claude-plugin/plugin.json
Normal 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
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# feature-tracker
|
||||
|
||||
Track feature development with Notion integration
|
||||
72
commands/feature-end.md
Normal file
72
commands/feature-end.md
Normal 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
63
commands/feature-start.md
Normal 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
49
plugin.lock.json
Normal 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": []
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user