Initial commit

This commit is contained in:
Zhongwei Li
2025-11-29 18:24:24 +08:00
commit f4fe5ac0c3
74 changed files with 33758 additions and 0 deletions

View File

@@ -0,0 +1,328 @@
---
description: Run quality checks - resolve IDE warnings, run linting, execute tests
allowed-tools: [Bash, LinearMCP]
argument-hint: <linear-issue-id>
---
# Quality Check for: $1
## 💡 Hint: Try the New Natural Command
For a simpler workflow, consider using:
```bash
/ccpm:verify [issue-id]
```
**Benefits:**
- Auto-detects issue from git branch if not provided
- Runs both quality checks AND final verification in sequence
- Part of the 6-command natural workflow
- See: [Quick Start Guide](./README.md#quick-start)
This command still works perfectly! The hint is just a suggestion.
---
Running comprehensive quality checks before verification.
## 🚨 CRITICAL: Safety Rules
**READ FIRST**: ``$CCPM_COMMANDS_DIR/SAFETY_RULES.md``
**NEVER** submit, post, or update anything to Jira, Confluence, BitBucket, or Slack without explicit user confirmation.
- ✅ **Linear** operations are permitted (internal tracking)
- ⛔ **External PM systems** require user confirmation for write operations
## Quality Check Workflow
### Step 0: Check Implementation Checklist Completion
**BEFORE running quality checks**, verify the Implementation Checklist is complete:
**A) Fetch Linear Issue**
Use **Linear MCP** to get issue: $1
**B) Parse Checklist from Description**
Look for checklist using markers:
```markdown
<!-- ccpm-checklist-start -->
- [ ] Task 1
- [x] Task 2
<!-- ccpm-checklist-end -->
```
Or find "## ✅ Implementation Checklist" header.
**C) Calculate Completion Percentage**
Count total items vs. checked items:
- Total items: Count all `- [ ]` and `- [x]` lines
- Checked items: Count `- [x]` lines only
- Percentage: (checked / total) × 100
**D) Display Checklist Status**
```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 Implementation Checklist Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Progress: X% (Y/Z completed)
[If < 100%]
⚠️ Checklist is not complete!
Remaining Items:
- [ ] Task 3: Description
- [ ] Task 5: Description
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**E) Prompt User if Incomplete**
If completion < 100%, use **AskUserQuestion**:
```javascript
{
questions: [
{
question: "Checklist shows X% complete. What would you like to do?",
header: "Checklist",
multiSelect: false,
options: [
{
label: "Update checklist first",
description: "Mark completed items before verification"
},
{
label: "Continue anyway",
description: "Run quality checks with incomplete checklist (warning will be logged)"
},
{
label: "Cancel",
description: "Go back and complete remaining items"
}
]
}
]
}
```
**If "Update checklist first" selected:**
- Display unchecked items
- Use **AskUserQuestion** multi-select to let user mark items complete
- Update description with changes
- Then proceed to quality checks
**If "Continue anyway" selected:**
- Log warning in Linear comment:
```markdown
⚠️ Quality checks run with incomplete checklist (X% complete)
```
- Add "incomplete-checklist" label
- Proceed to quality checks
**If "Cancel" selected:**
- Display message: "Complete remaining checklist items, then run /ccpm:verification:check $1 again"
- Exit without running checks
**If 100% complete:**
- Display: ✅ Checklist complete! Proceeding with quality checks...
- Continue to Step 1
### Step 1: IDE Warnings & Errors
Check and resolve:
- ✅ All IDE warnings
- ✅ All compilation errors
- ✅ Unused imports and variables
- ✅ Type consistency
- ✅ Missing dependencies
Use your IDE or LSP to identify issues, then fix them.
Display results:
```
🔧 IDE Checks:
[List any warnings/errors found and fixed]
```
### Step 2: Linting
Run project linter based on project type:
**For JavaScript/TypeScript projects**:
```bash
!npm run lint
# or
!yarn lint
# or
!pnpm lint
```
**For Python projects**:
```bash
!pylint src/
# or
!flake8 src/
# or
!ruff check .
```
**Auto-fix if available**:
```bash
!npm run lint:fix
# or
!yarn lint --fix
```
Display results:
```
✨ Linting:
[Show linting results]
```
If linting fails, fix all issues before proceeding.
### Step 3: Run Tests
Execute all test suites:
**For JavaScript/TypeScript**:
```bash
!npm test
# or
!yarn test
# or
!pnpm test
```
**For Python**:
```bash
!pytest
# or
!python -m unittest
```
**Optional - Check coverage**:
```bash
!npm run test:coverage
```
Display results:
```
🧪 Tests:
[X/Y tests passed]
[Coverage: Z%]
```
If any tests fail, fix them before proceeding.
### Step 4: Project-Specific Checks
Run any additional project-specific checks:
- Build verification
- Type checking (if separate from linting)
- Security scans
- Integration tests
### Step 5: Update Linear
Use **Linear MCP**:
**If ALL checks passed**:
1. Update status to: **Verification**
2. Remove label: **implementation**
3. Add label: **verification**
4. Add comment:
```markdown
## ✅ Quality Checks Passed
### Results:
- ✅ IDE checks: PASS
- ✅ Linting: PASS
- ✅ Tests: PASS ([X]/[Y] tests)
- ✅ Coverage: [Z]%
Ready for verification!
```
**If ANY checks failed**:
1. Keep status: **In Progress**
2. Add label: **blocked**
3. Add comment:
```markdown
## ❌ Quality Checks Failed
### Issues Found:
- [ ] IDE warnings: [count and description]
- [ ] Linting errors: [count and description]
- [ ] Test failures: [count and description]
### Action Required:
Fix the issues above before proceeding to verification.
```
### Step 6: Display Summary
```
📊 Quality Check Results for $1
✅ IDE Checks: [PASS/FAIL]
✅ Linting: [PASS/FAIL]
✅ Tests: [PASS/FAIL - X/Y tests]
[If all passed]
🎉 All checks passed!
Next step: /verify $1
[If any failed]
❌ Some checks failed - please fix issues and run /check again
```
## Common Commands by Project Type
### React/Next.js
```bash
npm run lint
npm run type-check
npm test
npm run build
```
### React Native
```bash
npm run lint
npm test
npm run ios # or android - build check
```
### Node.js/Express
```bash
npm run lint
npm run type-check
npm test
```
### Python/Django
```bash
flake8 .
mypy .
pytest
python manage.py check
```
## Notes
- Fix all issues before moving to verification
- If build fails, that's a blocking issue
- Test failures must be resolved, not skipped
- Linting rules should not be disabled to pass checks
- Use `--fix` flags when available for auto-fixes