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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Refactor: Change loop directory from .humanize-loop.local to .humanize/rlcr by SihaoLiu · Pull Request #9 · PolyArch/humanize · GitHub
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

claudeBot 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 mainJan 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 freeto 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

@SihaoLiu