Skip to content

v1.1.1: wbox skills sync + skill doc improvements - #6

Merged
massive-value merged 1 commit into
mainfrom
feat/skills-sync
May 1, 2026
Merged

v1.1.1: wbox skills sync + skill doc improvements#6
massive-value merged 1 commit into
mainfrom
feat/skills-sync

Conversation

@massive-value

Copy link
Copy Markdown
Owner

Summary

  • Add wbox skills sync — copies firm/ files from one installed platform to one or more others, with wizard-style prompts by default and --source / --target / --all-targets / --dry-run / --yes flags for non-interactive use. Closes Add Skills Sync Command #4.
  • Roll up SKILL.md / references/notes.md improvements from a real-world usage review: new "Common Recipes" section (find-then-act, multi-line content with shell-special characters), --frame and "don't infer flag names" surfaced in Patterns to Know, and a one-line note that attachments are web-UI only.
  • Bump to 1.1.1.

Test plan

  • ruff check src/ tests/ clean
  • pytest — 203 passed (including 7 new tests in test_skills_cli_sync.py)
  • wbox --version reports 1.1.1
  • wbox skills sync -h renders the new command
  • Manual smoke test: install to two platforms, edit firm/notes.md in source, run wbox skills sync interactively, confirm target reflects source

🤖 Generated with Claude Code

New `wbox skills sync` command copies firm/ files from one installed
platform to one or more others, with wizard-style prompts when run
without flags. Closes #4.

Also folds in skill content improvements from a real-world usage review:
- SKILL.md gains a "Common Recipes" section (find-then-act lookup,
  multi-line content with shell-special characters)
- Patterns to Know surfaces --frame and a "don't infer flag names"
  reminder
- references/notes.md notes that attachments are web-UI only

Bumps to 1.1.1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@massive-value
massive-value merged commit af25f24 into main May 1, 2026
5 checks passed
@massive-value
massive-value deleted the feat/skills-sync branch May 1, 2026 00:58

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7f368017fd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +342 to +343
if t.id == source.id:
typer.echo(f"Error: target {t.id!r} is the same as the source.", err=True)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reject targets that map to the same firm path

The sync guard only compares platform IDs, but claude-code-user and claude-code-project can resolve to the same directory (for example when cwd == $HOME, both point under ~/.claude/skills/wealthbox-crm/firm). In that case this check passes, then shutil.copytree(src_firm, tgt_firm, dirs_exist_ok=True) attempts to copy a directory onto itself and raises shutil.Error, aborting the command. Please validate target/source path equality (e.g., resolved firm paths) in addition to ID equality.

Useful? React with 👍 / 👎.

massive-value added a commit that referenced this pull request May 5, 2026
- doctor.py: _detect_token_source now loads .env after config-file step,
  matching get_client's resolution order. Previously wbox doctor would
  falsely report "token not configured" when only a .env file supplied
  the token, even though normal API commands authenticated fine.
- install.ps1: surface non-zero exit code from finally block when a
  caught exception leaves $state == 'errored', so CI wrappers and
  bootstrap scripts can detect installer failures.
- skills.py install_cmd: migrate legacy firm/ before the install loop
  runs. install_skill(force=True) deletes the existing skill dir, so
  pre-1.2 users running 'wbox skills install --force' could lose firm
  data before the migration step had a chance to copy it out.
- skills.py uninstall_cmd: migrate legacy firm/ before deleting the
  skill dir. The help text already promised firm data is preserved;
  this makes that true for pre-1.2 layouts too.

Codex's two skills-sync findings (PRs #6, #7) are obsolete —
'wbox skills sync' was removed when firm data became machine-level.
The README \| finding (PR #12) is GFM-required to escape pipes inside
table cells; the rendered README copy-paste path works correctly.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Skills Sync Command

1 participant