commit 3243e06ddb689d3ed5745be43ec1ccf949f02acf Author: Zhongwei Li Date: Sun Nov 30 08:37:39 2025 +0800 Initial commit diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..4c5dcf7 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "feature-tracker", + "description": "Track feature development with Notion integration", + "version": "1.0.0", + "author": { + "name": "Lightsoft" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c6861c4 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# feature-tracker + +Track feature development with Notion integration diff --git a/commands/feature-end.md b/commands/feature-end.md new file mode 100644 index 0000000..4a2352d --- /dev/null +++ b/commands/feature-end.md @@ -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 + ``` +- 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 diff --git a/commands/feature-start.md b/commands/feature-start.md new file mode 100644 index 0000000..d3551e5 --- /dev/null +++ b/commands/feature-start.md @@ -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 diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..e4fb056 --- /dev/null +++ b/plugin.lock.json @@ -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": [] + } +} \ No newline at end of file