From 1b58edd678b50d620b03eca29926f01e7ace8c25 Mon Sep 17 00:00:00 2001 From: leovs09 Date: Tue, 24 Feb 2026 23:28:38 +0100 Subject: [PATCH 1/2] fix(sdd): enforce foreground agents --- .claude-plugin/marketplace.json | 4 ++-- plugins/sdd/.claude-plugin/plugin.json | 2 +- plugins/sdd/skills/implement/SKILL.md | 14 +++++++++++++- plugins/sdd/skills/plan/SKILL.md | 10 ++++++++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 531c943..06d3062 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,7 +1,7 @@ { "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", "name": "context-engineering-kit", - "version": "2.1.0", + "version": "2.1.1", "description": "Hand-crafted collection of advanced context engineering techniques and patterns with minimal token footprint focused on improving agent result quality.", "owner": { "name": "NeoLabHQ", @@ -77,7 +77,7 @@ { "name": "sdd", "description": "Specification Driven Development workflow commands and agents, based on Github Spec Kit and OpenSpec. Uses specialized agents for effective context management and quality review.", - "version": "2.1.0", + "version": "2.1.1", "author": { "name": "Vlad Goncharov", "email": "vlad.goncharov@neolab.finance" diff --git a/plugins/sdd/.claude-plugin/plugin.json b/plugins/sdd/.claude-plugin/plugin.json index eecbcc6..fa17f32 100644 --- a/plugins/sdd/.claude-plugin/plugin.json +++ b/plugins/sdd/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "sdd", - "version": "2.1.0", + "version": "2.1.1", "description": "Specification Driven Development workflow commands and agents, based on Github Spec Kit and OpenSpec. Uses specialized agents for effective context management and quality review.", "author": { "name": "Vlad Goncharov", diff --git a/plugins/sdd/skills/implement/SKILL.md b/plugins/sdd/skills/implement/SKILL.md index 030e911..7580a24 100644 --- a/plugins/sdd/skills/implement/SKILL.md +++ b/plugins/sdd/skills/implement/SKILL.md @@ -306,7 +306,9 @@ Orchestrators who "quickly verify" = skip judge agents = quality collapse = fail --- -## CRITICAL Configuration Rules +## CRITICAL + +### Configuration Rules - Use `THRESHOLD_FOR_STANDARD_COMPONENTS` (default 4.0) for standard steps! - Use `THRESHOLD_FOR_CRITICAL_COMPONENTS` (default 4.5) for steps marked as critical in task file! @@ -317,6 +319,16 @@ Orchestrators who "quickly verify" = skip judge agents = quality collapse = fail - **If `CONTINUE_MODE` is true: Skip to `RESUME_FROM_STEP` - do not re-implement already completed steps!** - **If `REFINE_MODE` is true: Detect changed project files, map to steps, re-verify from `REFINE_FROM_STEP` - preserve user's fixes!** +### Execution & Evaluation Rules + +- **Use foreground agents only**: Do not use background agents. Launch parallel agents when possible. Background agents constantly run in permissions issues and other errors. + +Relaunch judge till you get valid results, of following happens: + +- Reject Long Reports: If an agent returns a very long report instead of using the scratchpad as requested, reject the result. This indicates the agent failed to follow the "use scratchpad" instruction. +- Judge Score 5.0 is a Hallucination: If a judge returns a score of 5.0/5.0, treat it as a hallucination or lazy evaluation. Reject it and re-run the judge. Perfect scores are practically impossible in this rigorous framework. +- Reject Missing Scores: If a judge report is missing the numerical score, reject it. This indicates the judge failed to read or follow the rubric instructions. + --- ## Overview diff --git a/plugins/sdd/skills/plan/SKILL.md b/plugins/sdd/skills/plan/SKILL.md index 7fbe5ca..ab0763c 100644 --- a/plugins/sdd/skills/plan/SKILL.md +++ b/plugins/sdd/skills/plan/SKILL.md @@ -337,6 +337,16 @@ Update each todo to `in_progress` when starting a phase and `completed` when jud - **Task file must exist in `.specs/tasks/draft/` before running this command (unless `--refine` mode)!** - **If `REFINE_MODE` is true: Detect changes via git diff, skip unchanged stages, pass user feedback to agents!** +### Execution & Evaluation Rules + +- **Use foreground agents only**: Do not use background agents. Launch parallel agents when possible. Background agents constantly run in permissions issues and other errors. + +Relaunch judge till you get valid results, of following happens: + +- Reject Long Reports: If an agent returns a very long report instead of using the scratchpad as requested, reject the result. This indicates the agent failed to follow the "use scratchpad" instruction. +- Judge Score 5.0 is a Hallucination: If a judge returns a score of 5.0/5.0, treat it as a hallucination or lazy evaluation. Reject it and re-run the judge. Perfect scores are practically impossible in this rigorous framework. +- Reject Missing Scores: If a judge report is missing the numerical score, reject it. This indicates the judge failed to read or follow the rubric instructions. + ## Workflow Execution You MUST launch for each step a separate agent, instead of performing all steps yourself. From 25ef12f745f3a13918bc5777d6667a6b9fb35425 Mon Sep 17 00:00:00 2001 From: leovs09 Date: Tue, 24 Feb 2026 23:30:25 +0100 Subject: [PATCH 2/2] ci: migrate to just --- CLAUDE.md | 26 ++++++++-------- Makefile | 91 ------------------------------------------------------- justfile | 74 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+), 104 deletions(-) delete mode 100644 Makefile create mode 100644 justfile diff --git a/CLAUDE.md b/CLAUDE.md index d803128..4f16b94 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -20,7 +20,7 @@ context-engineering-kit/ │ └── / # Plugin documentation │ └── README.md ├── specs/ # Feature specifications -├── Makefile # Development commands +├── justfile # Development commands └── CONTRIBUTING.md # Contribution guidelines ``` @@ -31,12 +31,12 @@ code-review, customaize-agent, ddd, docs, git, kaizen, mcp, reflexion, sadd, sdd ## Development Commands ```bash -make help # Show all commands -make list-plugins # List plugins with versions -make sync-docs-to-plugins # Copy docs/plugins/*/README.md → plugins/*/README.md -make sync-plugins-to-docs # Copy plugins/*/README.md → docs/plugins/*/README.md -make set-version PLUGIN=name VERSION=x.y.z # Update plugin version -make set-marketplace-version VERSION=x.y.z # Update marketplace version +just help # Show all commands +just list-plugins # List plugins with versions +just sync-docs-to-plugins # Copy docs/plugins/*/README.md → plugins/*/README.md +just sync-plugins-to-docs # Copy plugins/*/README.md → docs/plugins/*/README.md +just set-version # Update plugin version +just set-marketplace-version # Update marketplace version ``` ## Key Development Rules @@ -50,9 +50,9 @@ make set-marketplace-version VERSION=x.y.z # Update marketplace version ### When Creating/Modifying Plugins -- Use `make set-version PLUGIN= VERSION=` to update plugin versions consistently, do not modify manually. -- Use `make set-marketplace-version VERSION=` to update the marketplace version, do not modify manually. -- Keep README.md in sync between `plugins//` and `docs/plugins//` using `make sync-docs-to-plugins` and `make sync-plugins-to-docs` commands. Do not update both manually. +- Use `just set-version ` to update plugin versions consistently, do not modify manually. +- Use `just set-marketplace-version ` to update the marketplace version, do not modify manually. +- Keep README.md in sync between `plugins//` and `docs/plugins//` using `just sync-docs-to-plugins` and `just sync-plugins-to-docs` commands. Do not update both manually. - Test plugins with Claude Code before committing using `plugins/customaize-agent:test-prompt` and `plugins/customaize-agent:test-skill` commands. ### When Adding New Skills or Commands @@ -65,9 +65,9 @@ make set-marketplace-version VERSION=x.y.z # Update marketplace version 4. `docs/plugins/README.md` - Update Key Features for the plugin 5. `docs/resources/related-projects.md` - Add source project attribution if based on external work 6. `docs/resources/papers.md` - Add research papers if technique is based on academic research -7. Run `make sync-plugins-to-docs` to sync plugin README to docs/ -8. Bump plugin version: `make set-version PLUGIN= VERSION=` (minor for features) -9. Bump marketplace version: `make set-marketplace-version VERSION=` +7. Run `just sync-plugins-to-docs` to sync plugin README to docs/ +8. Bump plugin version: `just set-version ` (minor for features) +9. Bump marketplace version: `just set-marketplace-version ` **Finding All References**: Before declaring documentation complete, search for all files referencing the plugin: diff --git a/Makefile b/Makefile deleted file mode 100644 index f64b937..0000000 --- a/Makefile +++ /dev/null @@ -1,91 +0,0 @@ -# Makefile for Context Engineering Kit -# Plugin management commands - -PLUGINS := code-review customaize-agent ddd docs git kaizen mcp reflexion sadd sdd tdd tech-stack fpf -MARKETPLACE := .claude-plugin/marketplace.json - -.PHONY: help sync-docs-to-plugins sync-plugins-to-docs set-version set-marketplace-version list-plugins - -help: - @echo "Available commands:" - @echo " make sync-docs-to-plugins - Copy README.md from docs/plugins/* to plugins/*" - @echo " make sync-plugins-to-docs - Copy README.md from plugins/* to docs/plugins/*" - @echo " make set-version PLUGIN=name VERSION=x.y.z - Set version for a plugin" - @echo " make set-marketplace-version VERSION=x.y.z - Set version for marketplace" - @echo " make list-plugins - List all available plugins" - -# Copy README.md files from docs/plugins/ to respective plugins/ folders -sync-docs-to-plugins: - @echo "Syncing README.md files from docs/plugins/ to plugins/..." - @for plugin in $(PLUGINS); do \ - if [ -f "docs/plugins/$$plugin/README.md" ]; then \ - cp "docs/plugins/$$plugin/README.md" "plugins/$$plugin/README.md"; \ - echo " Copied: docs/plugins/$$plugin/README.md -> plugins/$$plugin/README.md"; \ - else \ - echo " Skipped: docs/plugins/$$plugin/README.md (not found)"; \ - fi; \ - done - @echo "Done." - -# Copy README.md files from plugins/ to docs/plugins/ folders -sync-plugins-to-docs: - @echo "Syncing README.md files from plugins/ to docs/plugins/..." - @for plugin in $(PLUGINS); do \ - if [ -f "plugins/$$plugin/README.md" ]; then \ - mkdir -p "docs/plugins/$$plugin"; \ - cp "plugins/$$plugin/README.md" "docs/plugins/$$plugin/README.md"; \ - echo " Copied: plugins/$$plugin/README.md -> docs/plugins/$$plugin/README.md"; \ - else \ - echo " Skipped: plugins/$$plugin/README.md (not found)"; \ - fi; \ - done - @echo "Done." - -# Set version for a specific plugin -# Usage: make set-version PLUGIN=tdd VERSION=1.2.0 -set-version: -ifndef PLUGIN - $(error PLUGIN is required. Usage: make set-version PLUGIN=name VERSION=x.y.z) -endif -ifndef VERSION - $(error VERSION is required. Usage: make set-version PLUGIN=name VERSION=x.y.z) -endif - @if [ ! -f "plugins/$(PLUGIN)/.claude-plugin/plugin.json" ]; then \ - echo "Error: Plugin '$(PLUGIN)' not found"; \ - exit 1; \ - fi - @echo "Updating version for plugin '$(PLUGIN)' to $(VERSION)..." - @# Update plugin.json - @jq '.version = "$(VERSION)"' "plugins/$(PLUGIN)/.claude-plugin/plugin.json" > "plugins/$(PLUGIN)/.claude-plugin/plugin.json.tmp" && \ - mv "plugins/$(PLUGIN)/.claude-plugin/plugin.json.tmp" "plugins/$(PLUGIN)/.claude-plugin/plugin.json" - @echo " Updated: plugins/$(PLUGIN)/.claude-plugin/plugin.json" - @# Update marketplace.json - @jq '(.plugins[] | select(.name == "$(PLUGIN)")).version = "$(VERSION)"' "$(MARKETPLACE)" > "$(MARKETPLACE).tmp" && \ - mv "$(MARKETPLACE).tmp" "$(MARKETPLACE)" - @echo " Updated: $(MARKETPLACE)" - @echo "Done. Version set to $(VERSION) for plugin '$(PLUGIN)'" - -# Set version for the marketplace -set-marketplace-version: -ifndef VERSION - $(error VERSION is required. Usage: make set-marketplace-version VERSION=x.y.z) -endif - @if [ ! -f "$(MARKETPLACE)" ]; then \ - echo "Error: Marketplace file '$(MARKETPLACE)' not found"; \ - exit 1; \ - fi - @echo "Updating marketplace version to $(VERSION)..." - @jq '.version = "$(VERSION)"' "$(MARKETPLACE)" > "$(MARKETPLACE).tmp" && \ - mv "$(MARKETPLACE).tmp" "$(MARKETPLACE)" - @echo " Updated: $(MARKETPLACE)" - @echo "Done. Marketplace version set to $(VERSION)" - -# List all available plugins -list-plugins: - @echo "Available plugins:" - @for plugin in $(PLUGINS); do \ - if [ -f "plugins/$$plugin/.claude-plugin/plugin.json" ]; then \ - version=$$(jq -r '.version' "plugins/$$plugin/.claude-plugin/plugin.json"); \ - echo " $$plugin (v$$version)"; \ - fi; \ - done diff --git a/justfile b/justfile new file mode 100644 index 0000000..7615818 --- /dev/null +++ b/justfile @@ -0,0 +1,74 @@ +# Plugin management commands + +plugins := "code-review customaize-agent ddd docs git kaizen mcp reflexion sadd sdd tdd tech-stack fpf" +marketplace := ".claude-plugin/marketplace.json" + +# Show all commands +help: + @just --list + +# Copy README.md files from docs/plugins/ to respective plugins/ folders +sync-docs-to-plugins: + @echo "Syncing README.md files from docs/plugins/ to plugins/..." + @for plugin in {{plugins}}; do \ + if [ -f "docs/plugins/$plugin/README.md" ]; then \ + cp "docs/plugins/$plugin/README.md" "plugins/$plugin/README.md"; \ + echo " Copied: docs/plugins/$plugin/README.md -> plugins/$plugin/README.md"; \ + else \ + echo " Skipped: docs/plugins/$plugin/README.md (not found)"; \ + fi; \ + done + @echo "Done." + +# Copy README.md files from plugins/ to docs/plugins/ folders +sync-plugins-to-docs: + @echo "Syncing README.md files from plugins/ to docs/plugins/..." + @for plugin in {{plugins}}; do \ + if [ -f "plugins/$plugin/README.md" ]; then \ + mkdir -p "docs/plugins/$plugin"; \ + cp "plugins/$plugin/README.md" "docs/plugins/$plugin/README.md"; \ + echo " Copied: plugins/$plugin/README.md -> docs/plugins/$plugin/README.md"; \ + else \ + echo " Skipped: plugins/$plugin/README.md (not found)"; \ + fi; \ + done + @echo "Done." + +# Set version for a specific plugin +set-version plugin version: + @if [ ! -f "plugins/{{plugin}}/.claude-plugin/plugin.json" ]; then \ + echo "Error: Plugin '{{plugin}}' not found"; \ + exit 1; \ + fi + @echo "Updating version for plugin '{{plugin}}' to {{version}}..." + @# Update plugin.json + @jq '.version = "{{version}}"' "plugins/{{plugin}}/.claude-plugin/plugin.json" > "plugins/{{plugin}}/.claude-plugin/plugin.json.tmp" && \ + mv "plugins/{{plugin}}/.claude-plugin/plugin.json.tmp" "plugins/{{plugin}}/.claude-plugin/plugin.json" + @echo " Updated: plugins/{{plugin}}/.claude-plugin/plugin.json" + @# Update marketplace.json + @jq '(.plugins[] | select(.name == "{{plugin}}")).version = "{{version}}"' "{{marketplace}}" > "{{marketplace}}.tmp" && \ + mv "{{marketplace}}.tmp" "{{marketplace}}" + @echo " Updated: {{marketplace}}" + @echo "Done. Version set to {{version}} for plugin '{{plugin}}'" + +# Set version for the marketplace +set-marketplace-version version: + @if [ ! -f "{{marketplace}}" ]; then \ + echo "Error: Marketplace file '{{marketplace}}' not found"; \ + exit 1; \ + fi + @echo "Updating marketplace version to {{version}}..." + @jq '.version = "{{version}}"' "{{marketplace}}" > "{{marketplace}}.tmp" && \ + mv "{{marketplace}}.tmp" "{{marketplace}}" + @echo " Updated: {{marketplace}}" + @echo "Done. Marketplace version set to {{version}}" + +# List all available plugins +list-plugins: + @echo "Available plugins:" + @for plugin in {{plugins}}; do \ + if [ -f "plugins/$plugin/.claude-plugin/plugin.json" ]; then \ + version=$(jq -r '.version' "plugins/$plugin/.claude-plugin/plugin.json"); \ + echo " $plugin (v$version)"; \ + fi; \ + done