Skip to content

feat: offline robustness, non-text slop pattern, and technical nuance#17

Open
edithatogo wants to merge 79 commits intoblader:mainfrom
edithatogo:fix/issues-2-10-13-refinements
Open

feat: offline robustness, non-text slop pattern, and technical nuance#17
edithatogo wants to merge 79 commits intoblader:mainfrom
edithatogo:fix/issues-2-10-13-refinements

Conversation

@edithatogo
Copy link

@edithatogo edithatogo commented Jan 31, 2026

Closes #2, Closes #10, Closes #13.

This PR addresses multiple refinements:

Dylan Mordaunt (Illawarra Shoalhaven LHD) added 30 commits January 25, 2026 17:16
Dylan Mordaunt (Illawarra Shoalhaven LHD) added 26 commits January 31, 2026 20:16
Copilot AI review requested due to automatic review settings January 31, 2026 11:53
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands and hardens the repo’s “adapter” ecosystem by adding Python automation + tests, introducing a Professional skill variant assembled from modular fragments, and adding prose linting via Vale (Google/Microsoft style packages).

Changes:

  • Added Python equivalents of adapter sync/validate/install scripts with pytest coverage + strict Ruff/Mypy configuration.
  • Refactored skill content into src/ fragments and introduced SKILL_PROFESSIONAL.md (Humanizer Pro), plus updated adapters/docs to reference variants.
  • Added Vale + bundled Google/Microsoft style rules, wired into pre-commit and CI.

Reviewed changes

Copilot reviewed 169 out of 171 changed files in this pull request and generated 14 comments.

Show a summary per file
File Description
tests/init.py Initializes tests package.
tests/test_install_adapters.py Unit tests for Python install script behavior.
tests/test_sync_adapters.py Unit tests for Python sync script behavior.
tests/test_validate_adapters.py Unit tests for Python validation script behavior.
scripts/init.py Initializes scripts package.
scripts/install_adapters.py Python installer for adapters into local/workspace locations.
scripts/sync_adapters.py Python sync utility to propagate version/date into adapters.
scripts/validate_adapters.py Python validator to ensure adapters match canonical skill metadata.
scripts/install-adapters.ps1 PowerShell installer wrapper for adapter installation.
scripts/install-adapters.cmd CMD wrapper for PowerShell install script.
scripts/sync-adapters.ps1 PowerShell compiler/sync script assembling skill variants from src/.
scripts/sync-adapters.cmd CMD wrapper for PowerShell sync script.
scripts/validate-adapters.ps1 PowerShell validation script for adapter metadata alignment.
scripts/validate-adapters.cmd CMD wrapper for PowerShell validation script.
pyproject.toml Adds strict Ruff/Mypy and pytest+coverage settings.
.github/workflows/ci.yml CI job running pre-commit + pytest.
.pre-commit-config.yaml Adds hooks for Vale, Ruff, Mypy, and markdownlint.
.vale.ini Configures Vale to lint docs using Google/Microsoft styles.
.markdownlint.yaml Configures markdownlint rules used by pre-commit.
.gitignore Ignores Python caches and coverage artifacts.
WARP.md Updates repo guidance formatting.
README.md Updates installation/usage, adds multi-agent adapter and automation guidance.
SKILL.md Updates canonical Humanizer skill content (patterns + formatting updates).
SKILL_PROFESSIONAL.md Adds Pro variant skill focused on “Voice and Craft”.
src/core_frontmatter.yaml Modular fragment for shared frontmatter content.
src/core_patterns.md Modular fragment for shared pattern catalog (incl. Pattern #26).
src/human_header.md Modular header for standard skill variant.
src/pro_header.md Modular header for Pro variant.
AGENTS.md Codex CLI adapter instructions and metadata.
adapters/VERSIONING.md Documents adapter/skill versioning strategy.
adapters/vscode/HUMANIZER.md VS Code adapter markdown (metadata synced from skill).
adapters/vscode/humanizer.code-snippets VS Code snippet template for Humanizer prompt.
.vscode/humanizer.code-snippets Workspace snippet copy for convenience/installation target.
adapters/gemini-extension/gemini-extension.json Gemini CLI extension manifest.
adapters/gemini-extension/GEMINI.md Gemini adapter instructions/metadata.
adapters/gemini-extension/GEMINI_PRO.md Pro Gemini adapter instructions/metadata.
adapters/gemini-extension/commands/humanizer/humanize.toml Gemini saved command prompt for Humanizer.
adapters/antigravity-skill/README.md Antigravity skill adapter documentation.
adapters/antigravity-skill/SKILL.md Antigravity skill adapter (standard) content + metadata.
adapters/antigravity-skill/SKILL_PROFESSIONAL.md Antigravity skill adapter (pro) content + metadata.
adapters/antigravity-rules-workflows/rules/humanizer.md Antigravity rule template.
adapters/antigravity-rules-workflows/workflows/humanize.md Antigravity workflow template.
.agent/rules/humanizer.md Workspace-installed rule copy (local install target).
.agent/workflows/humanize.md Workspace-installed workflow copy (local install target).
.agent/skills/humanizer/README.md Workspace-installed skill README copy (local install target).
styles/Microsoft/meta.json Vale package metadata for Microsoft style rules.
styles/Microsoft/Acronyms.yml Microsoft acronyms rule.
styles/Microsoft/Accessibility.yml Microsoft accessibility language rule.
styles/Microsoft/Adverbs.yml Microsoft adverbs rule.
styles/Microsoft/Avoid.yml Microsoft avoided terms rule.
styles/Microsoft/AMPM.yml Microsoft AM/PM formatting rule.
styles/Microsoft/Auto.yml Microsoft auto-* hyphenation rule.
styles/Microsoft/Contractions.yml Microsoft contractions rule.
styles/Microsoft/Dashes.yml Microsoft dash spacing rule.
styles/Microsoft/DateFormat.yml Microsoft date format rule.
styles/Microsoft/DateNumbers.yml Microsoft ordinal date words rule.
styles/Microsoft/DateOrder.yml Microsoft date ordering rule.
styles/Microsoft/Ellipses.yml Microsoft ellipses rule.
styles/Microsoft/FirstPerson.yml Microsoft first-person pronoun rule.
styles/Microsoft/Foreign.yml Microsoft Latin abbreviations rule.
styles/Microsoft/Gender.yml Microsoft gender pronoun patterns rule.
styles/Microsoft/GenderBias.yml Microsoft gender-biased terms substitution.
styles/Microsoft/GeneralURL.yml Microsoft general-audience URL wording rule.
styles/Microsoft/HeadingAcronyms.yml Microsoft heading acronyms rule.
styles/Microsoft/HeadingColons.yml Microsoft heading colon capitalization rule.
styles/Microsoft/HeadingPunctuation.yml Microsoft heading punctuation rule.
styles/Microsoft/Headings.yml Microsoft heading capitalization rule.
styles/Microsoft/Hyphens.yml Microsoft -ly hyphenation rule.
styles/Microsoft/Negative.yml Microsoft negative number dash rule.
styles/Microsoft/Ordinal.yml Microsoft ordinal “-ly” rule.
styles/Microsoft/OxfordComma.yml Microsoft Oxford comma suggestion.
styles/Microsoft/Passive.yml Microsoft passive voice rule.
styles/Microsoft/Percentages.yml Microsoft percentage wording rule.
styles/Microsoft/Plurals.yml Microsoft optional plurals rule.
styles/Microsoft/Quotes.yml Microsoft quote punctuation rule.
styles/Microsoft/RangeTime.yml Microsoft time range rule.
styles/Microsoft/Semicolon.yml Microsoft semicolon suggestion.
styles/Microsoft/SentenceLength.yml Microsoft sentence length rule.
styles/Microsoft/Spacing.yml Microsoft sentence spacing rule.
styles/Microsoft/Suspended.yml Microsoft suspended hyphen constructs rule.
styles/Microsoft/Terms.yml Microsoft preferred terms substitutions.
styles/Microsoft/Units.yml Microsoft units formatting rule.
styles/Microsoft/URLFormat.yml Microsoft “URL of” wording substitution.
styles/Microsoft/Vocab.yml Microsoft vocabulary reminders.
styles/Microsoft/We.yml Microsoft first-person plural rule.
styles/Microsoft/Wordiness.yml Microsoft wordiness substitutions.
styles/Google/meta.json Vale package metadata for Google style rules.
styles/Google/vocab.txt Google vocabulary list.
styles/Google/Acronyms.yml Google acronyms rule.
styles/Google/AMPM.yml Google AM/PM formatting rule.
styles/Google/Colons.yml Google colon capitalization rule.
styles/Google/Contractions.yml Google contractions rule.
styles/Google/DateFormat.yml Google date format rule.
styles/Google/Ellipses.yml Google ellipses rule.
styles/Google/EmDash.yml Google em dash spacing rule.
styles/Google/Exclamation.yml Google exclamation rule.
styles/Google/FirstPerson.yml Google first-person pronoun rule.
styles/Google/Gender.yml Google gender pronoun patterns rule.
styles/Google/GenderBias.yml Google gender-biased terms substitution.
styles/Google/HeadingPunctuation.yml Google heading punctuation rule.
styles/Google/Headings.yml Google heading capitalization rule.
styles/Google/Latin.yml Google Latin abbreviations substitution.
styles/Google/LyHyphens.yml Google -ly hyphenation rule.
styles/Google/OptionalPlurals.yml Google optional plurals rule.
styles/Google/Ordinal.yml Google ordinal number rule.
styles/Google/OxfordComma.yml Google Oxford comma rule.
styles/Google/Parens.yml Google parentheses usage rule.
styles/Google/Passive.yml Google passive voice rule.
styles/Google/Periods.yml Google acronyms-with-periods rule.
styles/Google/Quotes.yml Google quote punctuation rule.
styles/Google/Ranges.yml Google numeric range phrasing rule.
styles/Google/Semicolons.yml Google semicolon rule.
styles/Google/Slang.yml Google internet slang rule.
styles/Google/Spacing.yml Google sentence spacing rule.
styles/Google/Spelling.yml Google American spelling rule.
styles/Google/We.yml Google first-person plural rule.
styles/Google/Will.yml Google “will” usage rule.
styles/Google/Units.yml Google units nonbreaking-space rule.
styles/Google/WordList.yml Google preferred word list substitutions.
conductor/workflow.md Adds/updates Conductor workflow process documentation.
conductor/tracks.md Lists tracks and their status.
conductor/tech-stack.md Documents project tech stack and constraints.
conductor/setup_state.json Records Conductor setup state.
conductor/product.md Product overview for multi-agent adapters direction.
conductor/product-guidelines.md Product behavior guidelines and invariants for adapters.
conductor/code_styleguides/general.md General code style guide.
conductor/code_styleguides/javascript.md JavaScript style guide summary.
conductor/code_styleguides/typescript.md TypeScript style guide summary.
conductor/tracks/universal-automated-adapters_20260131/spec.md Track spec for universal automated adapters.
conductor/tracks/universal-automated-adapters_20260131/plan.md Track plan for universal automated adapters.
conductor/tracks/universal-automated-adapters_20260131/metadata.json Track metadata for universal automated adapters.
conductor/tracks/humanizer-adapters_20260125/spec.md Track spec for initial adapter architecture.
conductor/tracks/humanizer-adapters_20260125/plan.md Track plan for initial adapter architecture.
conductor/tracks/humanizer-adapters_20260125/metadata.json Track metadata for initial adapter architecture.
conductor/tracks/humanizer-adapters_20260125/inventory.md Environment inventory for adapters.
conductor/tracks/humanizer-adapters_20260125/adapter-metadata.md Defines adapter metadata contract.
conductor/tracks/humanizer-adapters_20260125/adapter-core.md Shared adapter core instruction snippet.
conductor/tracks/gemini-extension_20260131/spec.md Track spec for Gemini extension adapter.
conductor/tracks/gemini-extension_20260131/requirements.md Gemini extension requirements summary.
conductor/tracks/gemini-extension_20260131/plan.md Track plan for Gemini extension adapter.
conductor/tracks/gemini-extension_20260131/metadata.json Track metadata for Gemini extension adapter.
conductor/tracks/gemini-extension_20260131/metadata-contract.md Gemini extension metadata contract reference.
conductor/tracks/gemini-extension_20260131/layout.md Gemini extension layout decisions.
conductor/tracks/gemini-extension_20260131/implementation.md Gemini extension implementation notes.
conductor/tracks/devops-quality_20260131/spec.md Track spec for DevOps/quality tooling.
conductor/tracks/devops-quality_20260131/plan.md Track plan for DevOps/quality tooling.
conductor/tracks/devops-quality_20260131/metadata.json Track metadata for DevOps/quality tooling.
conductor/tracks/antigravity-skills_20260131/spec.md Track spec for Antigravity skill adapter.
conductor/tracks/antigravity-skills_20260131/plan.md Track plan for Antigravity skill adapter.
conductor/tracks/antigravity-skills_20260131/metadata.json Track metadata for Antigravity skill adapter.
conductor/tracks/antigravity-rules-workflows_20260131/spec.md Track spec for Antigravity rules/workflows.
conductor/tracks/antigravity-rules-workflows_20260131/plan.md Track plan for Antigravity rules/workflows.
conductor/tracks/antigravity-rules-workflows_20260131/metadata.json Track metadata for Antigravity rules/workflows.
conductor/tracks/adapters-expansion_20260131/spec.md Track spec for Qwen/Copilot adapter expansion.
conductor/tracks/adapters-expansion_20260131/plan.md Track plan for Qwen/Copilot adapter expansion.
conductor/tracks/adapters-expansion_20260131/metadata.json Track metadata for Qwen/Copilot adapter expansion.
pr11.json Captured metadata for referenced PR #11.
issues.json Snapshot of referenced issues list.
issue_2.txt Snapshot content for issue #2.
issue_10.txt Snapshot content for issue #10.
issue_13.txt Snapshot content for issue #13.
issue_15.txt Snapshot content for issue #15.
issue_16.txt Snapshot content for issue #16.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 14 to 26
### Manual install/update

If you already have this repo cloned (or you downloaded `SKILL.md`), copy the skill file into Claude Code’s skills directory:
Copy the desired skill file into Claude Code’s skills directory:

**Standard Version (Human):**
```bash
mkdir -p ~/.claude/skills/humanizer
cp SKILL.md ~/.claude/skills/humanizer/
cp SKILL.md ~/.claude/skills/humanizer/SKILL.md
```

**Professional Version (Pro):**
```bash
cp SKILL_PROFESSIONAL.md ~/.claude/skills/humanizer/SKILL_PROFESSIONAL.md
```
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The manual install commands assume ~/.claude/skills/humanizer/ already exists, but the section no longer creates it. Add a mkdir -p ~/.claude/skills/humanizer step (or mention that the directory must exist) so the cp commands don’t fail.

Copilot uses AI. Check for mistakes.
Comment on lines 18 to 19


Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file starts a YAML frontmatter block with --- but never closes it with a terminating ---. Most frontmatter parsers (and the repo’s own WARP.md description) expect --- … ---, so the skill metadata may not parse correctly. Add the closing delimiter after allowed-tools.

Suggested change
---

Copilot uses AI. Check for mistakes.
Comment on lines +18 to +19


Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file starts YAML frontmatter with --- but doesn’t include a closing --- delimiter. That can break tools/agents that parse the skill metadata as frontmatter. Close the frontmatter block after the allowed-tools section.

Suggested change
---

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +7
allowed-tools:
- Read
- Write
- Edit
- Grep
- Glob
- AskUserQuestion
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

src/*_header.md files insert core_frontmatter.yaml into the YAML frontmatter, but nothing closes the frontmatter block. Consider appending a terminating --- (and a blank line) as part of this fragment (or in the headers) so generated SKILL*.md files have valid --- … --- frontmatter.

Copilot uses AI. Check for mistakes.
Comment on lines 42 to 54
if not re.search(rf"skill_name:\s*{re.escape(skill_name)}", content):
errors.append(f"{adapter_path}: skill_name mismatch (expected {skill_name})")

if not re.search(rf"skill_version:\s*{re.escape(skill_version)}", content):
errors.append(
f"{adapter_path}: skill_version mismatch (expected {skill_version})"
)

if "last_synced:" not in content:
errors.append(f"{adapter_path}: missing last_synced")

if not re.search(rf"source_path:\s*{re.escape(source_path)}", content):
errors.append(f"{adapter_path}: source_path mismatch (expected {source_path})")
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The metadata checks aren’t anchored, so mismatches can pass (e.g., skill_name: humanizer-pro matches expected humanizer, and 2.1.10 matches 2.1.1). Anchor these regexes to full lines (multiline) or parse the YAML frontmatter so validation can’t succeed on prefix matches.

Copilot uses AI. Check for mistakes.
Comment on lines 77 to 85
adapters = [
"AGENTS.md",
"adapters/gemini-extension/GEMINI.md",
"adapters/vscode/HUMANIZER.md",
"adapters/antigravity-skill/SKILL.md",
"adapters/antigravity-rules-workflows/README.md",
"adapters/qwen-cli/QWEN.md",
"adapters/copilot/COPILOT.md",
]
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The validation list omits Pro adapter artifacts that exist in the repo (e.g., adapters/antigravity-skill/SKILL_PROFESSIONAL.md, adapters/gemini-extension/GEMINI_PRO.md). If Pro is supported, include these paths in validation so drift is caught.

Copilot uses AI. Check for mistakes.
Comment on lines 90 to 93
adapter_path = root / adapter_rel_path
all_errors.extend(
validate_adapter(adapter_path, skill_name, skill_version, str(source_path))
)
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validate_adapter(..., str(source_path)) compares adapters against the CLI-provided path string. If a user passes --source path/to/SKILL.md, adapters that correctly record source_path: SKILL.md will fail validation. Compare against source_path.name (or a normalized repo-relative path) instead.

Copilot uses AI. Check for mistakes.
Comment on lines 91 to 116
# Define paths
root = Path(__file__).parent.parent
adapters = root / "adapters"

# 1. Antigravity Skill
sync_antigravity_skill(
source_path, adapters / "antigravity-skill" / "SKILL.md", version, today
)

# 2. Gemini Extension
update_metadata(adapters / "gemini-extension" / "GEMINI.md", version, today)

# 3. Antigravity Rules Metadata
update_metadata(
adapters / "antigravity-rules-workflows" / "README.md", version, today
)

# 4. Qwen CLI Metadata
update_metadata(adapters / "qwen-cli" / "QWEN.md", version, today)

# 5. Copilot Metadata
update_metadata(adapters / "copilot" / "COPILOT.md", version, today)

# 6. VS Code Metadata
update_metadata(adapters / "vscode" / "HUMANIZER.md", version, today)

Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Python sync script only updates Standard adapters (and hardcodes skill_name: humanizer for Antigravity). The repo also contains Pro artifacts (e.g., SKILL_PROFESSIONAL.md, GEMINI_PRO.md, SKILL_PROFESSIONAL.md under antigravity-skill) that won’t get synced/dated. Either add Pro handling here or document that Python sync is Standard-only.

Copilot uses AI. Check for mistakes.
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-cov ruff mypy pre-commit

Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI runs pre-commit (which includes a vale hook), but the workflow never installs the vale binary. On a clean runner this will fail. Add an explicit Vale install step (or switch to a pre-commit hook that vendors Vale) before pre-commit run --all-files.

Suggested change
- name: Install Vale
run: |
VALE_VERSION="3.8.0"
curl -sSL "https://github.com/errata-ai/vale/releases/download/v${VALE_VERSION}/vale_${VALE_VERSION}_Linux_64-bit.tar.gz" -o vale.tar.gz
tar -xzf vale.tar.gz
sudo mv vale /usr/local/bin/vale
rm vale.tar.gz

Copilot uses AI. Check for mistakes.
Comment on lines 16 to 17
- Reference the SKILL.md ersion: they are derived from.
- Include a last synced marker (date).
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There’s a stray control character in SKILL.md ersion that will render oddly and may break linters. Replace it with the intended word version.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant