Update "unnamed"
@@ -1,130 +0,0 @@
|
|||||||
> **Type:** Change Proposal Implementation
|
|
||||||
> **Version:** V5.2.0
|
|
||||||
> **Status:** In Progress
|
|
||||||
> **Date:** 2026-01-27
|
|
||||||
> **Origin:** [V5.2.0 Plugin Enhancements Proposal](Change-V5.2.0%3A-Plugin-Enhancements-Proposal)
|
|
||||||
> **Sprint:** Sprint 3
|
|
||||||
|
|
||||||
# Sprint 3: Hooks Implementation
|
|
||||||
|
|
||||||
This sprint focuses on implementing 6 foundational hooks across 4 plugins. These hooks provide enforcement, validation, and detection capabilities that other features may depend on.
|
|
||||||
|
|
||||||
## Sprint Goals
|
|
||||||
|
|
||||||
1. Implement commit message enforcement for conventional commits
|
|
||||||
2. Implement branch naming validation
|
|
||||||
3. Add intelligent prompt vagueness detection
|
|
||||||
4. Add schema change detection for data pipelines
|
|
||||||
5. Add smart contract validation on session start
|
|
||||||
6. Implement breaking change detection for plugin interfaces
|
|
||||||
|
|
||||||
## Issues
|
|
||||||
|
|
||||||
| # | Plugin | Title | Type | Priority |
|
|
||||||
|---|--------|-------|------|----------|
|
|
||||||
| TBD | git-flow | Commit enforcement hook | Feature | High |
|
|
||||||
| TBD | git-flow | Branch name validation hook | Feature | High |
|
|
||||||
| TBD | clarity-assist | Auto-suggest hook | Feature | Medium |
|
|
||||||
| TBD | data-platform | Schema diff detection hook | Feature | Medium |
|
|
||||||
| TBD | contract-validator | SessionStart auto-validate hook | Feature | High |
|
|
||||||
| TBD | contract-validator | Breaking change detection | Feature | High |
|
|
||||||
|
|
||||||
*Issue numbers will be updated after creation*
|
|
||||||
|
|
||||||
## Technical Architecture
|
|
||||||
|
|
||||||
### Hook Implementation Pattern
|
|
||||||
|
|
||||||
**CRITICAL LESSON LEARNED:** All hooks must be defined in `hooks/hooks.json`, NOT inline in plugin.json.
|
|
||||||
|
|
||||||
```
|
|
||||||
plugins/{name}/
|
|
||||||
hooks/
|
|
||||||
hooks.json <-- Hook definitions (auto-discovered)
|
|
||||||
*.sh <-- Shell scripts for command-type hooks
|
|
||||||
```
|
|
||||||
|
|
||||||
### Hook Event Types for This Sprint
|
|
||||||
|
|
||||||
| Hook | Event | Tool Filter | Behavior |
|
|
||||||
|------|-------|-------------|----------|
|
|
||||||
| Commit enforcement | `PreToolUse` | Bash (git commit) | Block if invalid format |
|
|
||||||
| Branch validation | `PreToolUse` | Bash (git checkout -b, git switch -c) | Block if invalid name |
|
|
||||||
| Auto-suggest | `UserPromptSubmit` | N/A | Suggest /clarity-assist |
|
|
||||||
| Schema diff | `PostToolUse` | Edit (schema files) | Warn on breaking changes |
|
|
||||||
| Auto-validate | `SessionStart` | N/A | Run if files changed |
|
|
||||||
| Breaking change | `PostToolUse` | Edit (plugin interfaces) | Warn on breaks |
|
|
||||||
|
|
||||||
### hooks.json Structure
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"hooks": {
|
|
||||||
"PreToolUse": [
|
|
||||||
{
|
|
||||||
"type": "command",
|
|
||||||
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/validate-commit.sh",
|
|
||||||
"tool_name": "Bash"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"SessionStart": [
|
|
||||||
{
|
|
||||||
"type": "command",
|
|
||||||
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/session-check.sh"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
```
|
|
||||||
+------------------+
|
|
||||||
| contract-validator|
|
|
||||||
| SessionStart hook |
|
|
||||||
+--------+---------+
|
|
||||||
|
|
|
||||||
v
|
|
||||||
+------------------+
|
|
||||||
| contract-validator|
|
|
||||||
| Breaking change |
|
|
||||||
+------------------+
|
|
||||||
|
|
||||||
+---------------+ +----------------+
|
|
||||||
| git-flow | | git-flow |
|
|
||||||
| Commit hook | | Branch hook |
|
|
||||||
+---------------+ +----------------+
|
|
||||||
(independent) (independent)
|
|
||||||
|
|
||||||
+---------------+ +----------------+
|
|
||||||
| clarity-assist| | data-platform |
|
|
||||||
| Auto-suggest | | Schema diff |
|
|
||||||
+---------------+ +----------------+
|
|
||||||
(independent) (independent)
|
|
||||||
```
|
|
||||||
|
|
||||||
The contract-validator hooks have a dependency: Breaking change detection works in conjunction with the SessionStart auto-validate hook.
|
|
||||||
|
|
||||||
## Acceptance Criteria
|
|
||||||
|
|
||||||
### All Hooks
|
|
||||||
- [ ] Hook defined in `hooks/hooks.json` (NOT plugin.json)
|
|
||||||
- [ ] Shell script tested independently
|
|
||||||
- [ ] Hook fires on correct event
|
|
||||||
- [ ] Non-blocking behavior where appropriate (warnings vs errors)
|
|
||||||
- [ ] Documentation updated in plugin README
|
|
||||||
|
|
||||||
### Specific Criteria
|
|
||||||
- **Commit hook:** Validates `type(scope): description` format
|
|
||||||
- **Branch hook:** Validates `type/description` format, lowercase, max 50 chars
|
|
||||||
- **Auto-suggest:** Detects vague prompts, suggests but does not block
|
|
||||||
- **Schema diff:** Detects column removals, type changes in SQL/YAML
|
|
||||||
- **Auto-validate:** Only runs when plugin files have git changes since last check
|
|
||||||
- **Breaking change:** Detects interface changes that break existing consumers
|
|
||||||
|
|
||||||
## Lessons Applied
|
|
||||||
|
|
||||||
1. **Plugin Hooks Must Be in Separate File** - All hooks in `hooks/hooks.json`
|
|
||||||
2. **Test Assertions Match API** - Write tests alongside implementation
|
|
||||||
3. **Each Issue Gets Feature Branch** - Follow `feat/{issue-number}-description` pattern
|
|
||||||
78
unnamed.md
Normal file
78
unnamed.md
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
> **Type:** Change Proposal Implementation
|
||||||
|
> **Version:** V5.2.0
|
||||||
|
> **Status:** In Progress
|
||||||
|
> **Date:** 2026-01-27
|
||||||
|
> **Origin:** [V5.2.0 Plugin Enhancements Proposal](Change-V5.2.0%3A-Plugin-Enhancements-Proposal)
|
||||||
|
> **Sprint:** Sprint 3
|
||||||
|
> **Milestone:** [Sprint 3 - Hooks](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/milestone/19)
|
||||||
|
|
||||||
|
# Sprint 3: Hooks Implementation
|
||||||
|
|
||||||
|
This sprint focuses on implementing 6 foundational hooks across 4 plugins. These hooks provide enforcement, validation, and detection capabilities that other features may depend on.
|
||||||
|
|
||||||
|
## Sprint Goals
|
||||||
|
|
||||||
|
1. Implement commit message enforcement for conventional commits
|
||||||
|
2. Implement branch naming validation
|
||||||
|
3. Add intelligent prompt vagueness detection
|
||||||
|
4. Add schema change detection for data pipelines
|
||||||
|
5. Add smart contract validation on session start
|
||||||
|
6. Implement breaking change detection for plugin interfaces
|
||||||
|
|
||||||
|
## Issues
|
||||||
|
|
||||||
|
| # | Plugin | Title | Priority | Complexity |
|
||||||
|
|---|--------|-------|----------|------------|
|
||||||
|
| [#225](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/225) | git-flow | Commit enforcement hook | High | Medium |
|
||||||
|
| [#226](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/226) | git-flow | Branch name validation hook | High | Medium |
|
||||||
|
| [#227](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/227) | clarity-assist | Auto-suggest hook | Medium | Medium |
|
||||||
|
| [#228](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/228) | data-platform | Schema diff detection hook | Medium | Complex |
|
||||||
|
| [#229](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/229) | contract-validator | SessionStart auto-validate hook | High | Medium |
|
||||||
|
| [#230](https://gitea.hotserv.cloud/personal-projects/leo-claude-mktplace/issues/230) | contract-validator | Breaking change detection | High | Complex |
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
```
|
||||||
|
#229 (SessionStart auto-validate) --> #230 (Breaking change detection)
|
||||||
|
|
||||||
|
#225, #226, #227, #228 are independent and can be done in parallel
|
||||||
|
```
|
||||||
|
|
||||||
|
## Technical Architecture
|
||||||
|
|
||||||
|
### Hook Implementation Pattern
|
||||||
|
|
||||||
|
**CRITICAL LESSON LEARNED:** All hooks must be defined in `hooks/hooks.json`, NOT inline in plugin.json.
|
||||||
|
|
||||||
|
```
|
||||||
|
plugins/{name}/
|
||||||
|
hooks/
|
||||||
|
hooks.json <-- Hook definitions (auto-discovered)
|
||||||
|
*.sh <-- Shell scripts for command-type hooks
|
||||||
|
```
|
||||||
|
|
||||||
|
### Hook Event Types for This Sprint
|
||||||
|
|
||||||
|
| Hook | Event | Tool Filter | Behavior |
|
||||||
|
|------|-------|-------------|----------|
|
||||||
|
| Commit enforcement | `PreToolUse` | Bash (git commit) | Block if invalid format |
|
||||||
|
| Branch validation | `PreToolUse` | Bash (git checkout -b) | Block if invalid name |
|
||||||
|
| Auto-suggest | `UserPromptSubmit` | N/A | Suggest /clarity-assist |
|
||||||
|
| Schema diff | `PostToolUse` | Edit (schema files) | Warn on breaking changes |
|
||||||
|
| Auto-validate | `SessionStart` | N/A | Run if files changed |
|
||||||
|
| Breaking change | `PostToolUse` | Edit (plugin interfaces) | Warn on breaks |
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
### All Hooks
|
||||||
|
- [ ] Hook defined in `hooks/hooks.json` (NOT plugin.json)
|
||||||
|
- [ ] Shell script tested independently
|
||||||
|
- [ ] Hook fires on correct event
|
||||||
|
- [ ] Non-blocking behavior where appropriate (warnings vs errors)
|
||||||
|
- [ ] Documentation updated in plugin README
|
||||||
|
|
||||||
|
## Lessons Applied
|
||||||
|
|
||||||
|
1. **Plugin Hooks Must Be in Separate File** - All hooks in `hooks/hooks.json`
|
||||||
|
2. **Test Assertions Match API** - Write tests alongside implementation
|
||||||
|
3. **Each Issue Gets Feature Branch** - Follow `feat/{issue-number}-description` pattern
|
||||||
Reference in New Issue
Block a user