Search

PythonReactSEOPDF
GitHub Skill

migrate-mmw

Migrate mark-my-words data files from the old flat .things/ layout to the per-plugin directory structure. Moves voice profiles and renames the blog working directory.

brennacodes☆ 0 Repository stars0 Repository forks

Installation

Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.

View source ↗Guides

Skill instructions

This skill handles data file relocation only. Config migration (config.yml -> config.json + preferences.json) is handled by /things:setup-things. Run /things:setup-things first if config.json doesn't exist yet.

<load-config>
  <action>Resolve the user's home directory.</action>
  <command language="bash" output="home" tool="Bash">echo $HOME</command>
  <constraint>Never pass `~` to the Read tool.</constraint>

  <read path="<home>/.things/config.json" output="config" />
  <if condition="config-missing">Tell the user: "Run `/things:setup-things` first to initialize your .things directory." Then stop.</if>
</load-config>

<action>Check for old data.</action>
<command language="bash" tool="Bash">ls -d <home>/.things/voices 2>/dev/null; ls -d <home>/.mark-my-words-workdir 2>/dev/null</command>
<if condition="no-old-data-found">Tell the user: "No old mark-my-words data found to migrate. Your data is already in the new location or hasn't been created yet." Then stop.</if>
<action>Inventory old data.</action>
<command language="bash" tool="Bash">echo "voices: $(ls <home>/.things/voices/*.md 2>/dev/null | wc -l | tr -d ' ') files"; echo "workdir: $([ -d <home>/.mark-my-words-workdir ] && echo 'yes' || echo 'no')"</command>

<output-format>
mark-my-words migration plan:

Data moves:
- `~/.things/voices/` (<n> files) -> `~/.things/mark-my-words/voices/`

Renames:
- `~/.mark-my-words-workdir` -> `~/.mark-my-words` (if present)
</output-format>

<if condition="dry-run-flag">Show the plan and stop. Do not move any files.</if>

<ask-user-question>
  <question>Proceed with mark-my-words data migration?</question>
  <option>Yes -- move files now</option>
  <option>No -- cancel</option>
</ask-user-question>
<command language="bash" tool="Bash">mkdir -p <home>/.things/mark-my-words/voices</command>
<constraint>Use `mv` (not `cp`) to avoid duplicates. Skip items that don't exist.</constraint>
<command language="bash" tool="Bash">mv <home>/.things/voices/* <home>/.things/mark-my-words/voices/ 2>/dev/null || true</command>
<if condition="old-workdir-exists">
  <command language="bash" tool="Bash">mv <home>/.mark-my-words-workdir <home>/.mark-my-words</command>

  <if condition="preferences-exist">
    <action>Read `<home>/.things/mark-my-words/preferences.json` and update `workdir` to `<home>/.mark-my-words` using Edit.</action>
  </if>
</if>

<action>Scan for stray copies in common locations.</action>
<command language="bash" tool="Bash">ls -d <home>/Documents/.mark-my-words-workdir <home>/Documents/personal/.mark-my-words-workdir 2>/dev/null</command>

<if condition="stray-copies-found">
  <output>
  Warning: Found additional `.mark-my-words-workdir` copies:
  - `<path>`

  These may have uncommitted changes. Review and remove them manually if no longer needed.
  </output>
</if>
<command language="bash" tool="Bash">rmdir <home>/.things/voices 2>/dev/null || true</command>
<constraint>Only `rmdir` (not `rm -rf`) -- this safely fails if the directory isn't empty.</constraint>
<command language="bash" tool="Bash">echo "voices: $(ls <home>/.things/mark-my-words/voices/*.md 2>/dev/null | wc -l | tr -d ' ') files"; echo "workdir: $([ -d <home>/.mark-my-words ] && echo '<home>/.mark-my-words' || echo 'not found')"</command>
<git-workflow>
  <action>Read git workflow from `<home>/.things/config.json`.</action>

  <if condition="workflow-auto">
    <command language="bash" tool="Bash">git -C <home>/.things add -A && git -C <home>/.things commit -m "migrate: mark-my-words data to per-plugin directory" && git -C <home>/.things push</command>
  </if>
  <if condition="workflow-ask">
    <ask-user-question>
      <question>Commit migrated files to .things repo?</question>
      <option>Yes -- commit and push</option>
      <option>Commit only -- commit without pushing</option>
      <option>No -- I'll handle git myself</option>
    </ask-user-question>
  </if>
  <if condition="workflow-manual">Tell the user their files have been moved and they can commit when ready.</if>
</git-workflow>
<completion-message>
mark-my-words data migration complete!

- <n> voice profiles -> `~/.things/mark-my-words/voices/`
- Blog working directory: `~/.mark-my-words`

Your data is now in the per-plugin directory structure. Use `/new-post-mmw` to write a post.
</completion-message>

Examples

Read the usage examples in the source repository.

View source ↗

Source history

Indexed on
2026-03-11
Index updated
2026-03-11
Branch
main

Index and sync dates describe this directory. View the source repository for code history.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!