Skip to content

Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr - #9

Merged
SihaoLiu merged 3 commits into
mainfrom
make-working-folder-to-humanize-only
Jan 16, 2026
Merged

Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr#9
SihaoLiu merged 3 commits into
mainfrom
make-working-folder-to-humanize-only

Conversation

@SihaoLiu

Copy link
Copy Markdown
Contributor

Summary

This PR refactors the RLCR loop state directory structure to use a cleaner, more organized path:

  • Changes from .humanize-loop.local/ to .humanize/rlcr/
  • Removes backward compatibility for legacy paths
  • Updates all documentation, scripts, hooks, and templates
  • Simplifies .gitignore pattern to .humanize*
  • Adds comprehensive tests for legacy path handling

Changes

  • Path Migration: All references to .humanize-loop.local updated to .humanize/rlcr
  • Code Cleanup: Removed backward compatibility code for old paths
  • Documentation: Updated README.md, command docs, and inline comments
  • Scripts: Updated setup-rlcr-loop.sh, humanize.sh monitoring script
  • Hooks: Updated all validators (bash, edit, read, write, plan-file)
  • Templates: Updated Codex prompt templates
  • Tests: Added negative tests for legacy path handling
  • Version Bump: 1.1.3 → 1.1.4 in all required files

Test Plan

  • Run existing tests to verify functionality
  • Verify .gitignore pattern works correctly
  • Check that legacy paths are no longer treated as active loops
  • Confirm all file path references are updated

Generated with Claude Code

…umanize/rlcr

- Update all scripts and hooks to use new .humanize/rlcr/<timestamp> path
- Add backward compatibility for legacy .humanize-loop.local paths
- Change .gitignore pattern from .humanize-loop.local/ to .humanize*
- Update all tests to use new path structure
- Update documentation and prompt templates
- Bump version to 1.1.4

All acceptance criteria met:
- AC-1: All references updated with dual-path support
- AC-2: .gitignore uses .humanize* pattern
- AC-3: All 266 tests pass
- AC-4: Tests verify new path structure
- AC-5: Version updated to 1.1.4
- AC-6: Monitor script works with new path
- AC-7: Legacy paths handled gracefully
…aths

Per the original plan requirement: "If there are legacy .humanize-loop.local
folder in users' project, we don't use it anymore, we just suggest it to be
added into .gitignore"

Changes:
- Update is_in_humanize_loop_dir() to only match .humanize/rlcr paths
- Remove legacy path matching from write, edit, and bash validators
- Simplify path extraction in validators to only use new path structure
- Update git-not-clean template to not explicitly mention legacy paths
- Simplify untracked file detection to match any .humanize* pattern

Tests added:
- Positive test: is_in_humanize_loop_dir detects .humanize/rlcr path
- Negative test: is_in_humanize_loop_dir does NOT detect legacy path
- Negative test: Legacy directory not searched when using new base path
- Negative test: Bash validator allows writes to legacy path
- Negative test: Write validator allows writes to legacy path
- Negative test: Edit validator allows edits to legacy path

All 277 tests pass.
Remove explicit .humanize-loop.local mentions from:
- .gitignore comment (simplified to just describe .humanize*)
- hooks/lib/loop-common.sh is_in_humanize_loop_dir() comment

Legacy path references now only exist in test files for negative
test coverage, as intended.
@claude

claude Bot commented Jan 16, 2026

Copy link
Copy Markdown

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

@SihaoLiu
SihaoLiu merged commit 5f54568 into main Jan 16, 2026
8 checks passed
SihaoLiu added a commit that referenced this pull request Jan 17, 2026
Fixes based on Round 0 Codex review:

HIGH - Haiku sub-agent invocation (AC-2.3):
- Changed from generic "general-purpose" subagent to explicit
  "draft-relevance-checker" agent reference
- Added clear Task tool parameters documentation
- Referenced the custom agent in agents/draft-relevance-checker.md

HIGH - Missing positive/negative test descriptions (AC-6):
- Added TDD-style test format to Acceptance Criteria template
- Each AC now includes Positive Tests (expected to PASS) and
  Negative Tests (expected to FAIL) sections
- Added Generation Rule #8 enforcing TDD-style tests

MEDIUM - Path boundary phrasing (AC-6.3):
- Changed from negative phrasing ("What should NOT be done") to
  affirmative descriptions ("Maximum Acceptable Scope")
- Added examples showing affirmative descriptions
- Added Generation Rule #9 for affirmative path boundaries

MEDIUM - Narrow path rule for deterministic drafts (AC-6.3):
- Added "Note on Deterministic Designs" explaining when upper and
  lower bounds should converge
- Added Generation Rule #10 for respecting fixed approaches
SihaoLiu added a commit that referenced this pull request Jan 17, 2026
…ns (v1.3.0) (#17)

* Feature: Add gen-plan command to transform drafts into structured plans (v1.2.4)

Add a new slash command /humanize:gen-plan that transforms user draft documents
into well-structured implementation plans with acceptance criteria (AC-X format).

New files:
- commands/gen-plan.md: Slash command entry point
- skills/gen-plan/SKILL.md: Main skill implementation with opus model
- scripts/validate-gen-plan-io.sh: IO path validation script
- agents/draft-relevance-checker.md: Haiku-based relevance checker

Workflow:
1. Validates input/output paths with clear error messages
2. Uses haiku sub-agent to check draft relevance to repository
3. Analyzes draft for clarity, consistency, completeness, functionality
4. Engages user via AskUserQuestion to resolve issues
5. Generates plan.md with goals, ACs, path boundaries, and suggestions

Additional changes:
- Unified model names to use short aliases (opus, sonnet, haiku) across all skills
- Updated test validation to accept short model aliases

Updated version to 1.2.4 in plugin.json, marketplace.json, and README.md.

* Fix: Address Codex review findings for gen-plan skill

Fixes based on Round 0 Codex review:

HIGH - Haiku sub-agent invocation (AC-2.3):
- Changed from generic "general-purpose" subagent to explicit
  "draft-relevance-checker" agent reference
- Added clear Task tool parameters documentation
- Referenced the custom agent in agents/draft-relevance-checker.md

HIGH - Missing positive/negative test descriptions (AC-6):
- Added TDD-style test format to Acceptance Criteria template
- Each AC now includes Positive Tests (expected to PASS) and
  Negative Tests (expected to FAIL) sections
- Added Generation Rule #8 enforcing TDD-style tests

MEDIUM - Path boundary phrasing (AC-6.3):
- Changed from negative phrasing ("What should NOT be done") to
  affirmative descriptions ("Maximum Acceptable Scope")
- Added examples showing affirmative descriptions
- Added Generation Rule #9 for affirmative path boundaries

MEDIUM - Narrow path rule for deterministic drafts (AC-6.3):
- Added "Note on Deterministic Designs" explaining when upper and
  lower bounds should converge
- Added Generation Rule #10 for respecting fixed approaches

* Simplify: Clean up gen-plan implementation (Finalize Phase)

Code simplification after Codex review approval:

commands/gen-plan.md:
- Simplified trailing description to single sentence
- Consistent with other command files in the project

scripts/validate-gen-plan-io.sh:
- Removed unnecessary empty echo statements
- Consolidated error messages for conciseness
- 11 lines removed, functionality unchanged

skills/gen-plan/SKILL.md:
- Simplified Phase 6 from numbered list to concise paragraph
- 4 lines removed, same information preserved

All 49 tests pass. Validation script tested and works correctly.

* Bump version to 1.3.0 for gen-plan feature release

Version bump from 1.2.4 to 1.3.0 for the new gen-plan command feature.

* Fix: Validate argument values before shift to ensure correct exit codes

Bug fix:
- When --input or --output is passed without a value, shift 2 would fail
  under set -e and exit with code 1 (mapped to "input not found") instead
  of exit code 6 ("invalid arguments")
- Added checks for missing argument values before shift 2
- Also catches flags followed by another flag (e.g., --input --output)

Test enhancement:
- Added 10 comprehensive tests for validate-gen-plan-io.sh exit codes
- Tests cover: missing values, unknown options, all validation exit codes
- Total tests now: 59 (was 49)

* Fix: Model validation requires exact match for short aliases

The regex was treating opus/sonnet/haiku as prefixes, accepting invalid
values like opus-v2, haiku123, or sonnet-fast.

Fix:
- Short aliases (opus, sonnet, haiku) now require exact match via ^...$
- Full model IDs (claude-*, gpt-*, etc.) still use prefix matching

Added tests:
- NT-6d: Rejects opus-v2 (partial match)
- NT-6e: Rejects haiku123 (partial match)
- NT-6f: Rejects sonnet-fast (partial match)

Total tests: 62

* Fix: Reject directory paths for --output parameter

Bug fix:
- If --output pointed to an existing directory (e.g., /tmp/ instead of
  /tmp/plan.md), validation passed but Write would fail at runtime
- Now rejects any existing path at output location (file, directory, symlink)
- Added specific error message when output is a directory with suggestion

Changes:
- Check 4 now uses -d to detect directories with clear error message
- Check 4 uses -e to catch any existing path (not just regular files)

Added test:
- validate-gen-plan-io: output is directory exits 4

Total tests: 63
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant