搜索

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 仓库 Stars0 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

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>

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-03-11
索引更新时间
2026-03-11
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

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