Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/Morrison-Lab/ai-config --skill convert-repo-formatコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
SKILL.md を表示中
| name | convert-repo-format |
| description | Convert repo format. |
| user-invocable | true |
| allowed-tools | ["Bash","Read","Edit","Write","WebFetch"] |
Take a repo that's built as one project format and rebuild it as another. The lab has four formats, each with a template repo that is the source of truth for what that format's files, config, and CI look like:
| Format | Template | project.type | Output dir | Is it an R package? |
|---|---|---|---|---|
| R package | rpt | — (no _quarto.yml) | altdoc site | Yes — full package |
| Quarto website | qwt | website | _site | Yes — light package |
| Quarto book | qbt | book | docs | No (Type: Book) |
| Quarto manuscript | qmt | manuscript | _manuscript | Yes — light package |
The core move is diff against the target template, not rewrite from scratch.
The four formats share most of their scaffolding (R tooling, spell/lint/link
checks, the @claude and Copilot workflows). A conversion keeps that shared
layer, swaps the project config, and changes only the format-specific files.
This is normal new work, so run it issue-first (the st skill): file a
tracking issue, branch, convert, open a PR, and ARDI to clean.
Read the signature files. Each format has a tell:
ls -A
cat DESCRIPTION 2>/dev/null
sed -n '1,15p' _quarto.yml 2>/dev/null
rpt): no _quarto.yml; DESCRIPTION with Package: +
Imports:/Suggests: + Roxygen:; R/, man/, NAMESPACE,
tests/testthat/, vignettes/, altdoc/, NEWS.md, renv.lock.qwt): _quarto.yml with a profile: key plus a
_quarto-website.yml whose project.type is website (output-dir: _site);
index.qmd, chapters/, reveal.js files (styles-reveal.scss,
qwt-reveal-toggle.html, revealjs-*.lua).qbt): _quarto.yml with project.type: book
(output-dir: docs, pre-render: pre-render.py) and a book: block listing
chapters; macros-header.html; DESCRIPTION is Type: Book (not a package).qmt): _quarto.yml with project.type: manuscript
(output-dir: _manuscript) and a manuscript: block with article: +
notebooks:; notebooks/, _repo-links.lua.State the detected source and the requested target before touching anything.
Work against the actual target template, not memory — the templates evolve.
gh/MCP
aren't scoped to them):
https://raw.githubusercontent.com/<owner>/<template>/main/<path>
(UCD-SERG for rpt/qwt/qbt, the repository owner for qmt)..github/workflows/ and top-level files first so you know
the full target shape.These exist in every format; carry them across unchanged (update repo-specific strings only):
.Rbuildignore, .Rprofile, .lintr.R, .gitattributes,
.gitignore, project.Rproj, inst/WORDLIST.LICENSE, README.Rmd → README.md, CONTRIBUTING.md /
CODE_OF_CONDUCT.md..github/workflows/ claude.yml, claude-code-review.yml,
copilot-setup-steps.yml, check-spelling.yaml. Most workflows are thin
callers of the reusable workflows in Morrison-Lab/gha
pinned @v1, so "convert the CI" mostly means copying the target template's
.github/workflows/ and updating repo-specific inputs — not rewriting logic.Add what the target needs; remove what only the source needed. Per target:
rpt)_quarto.yml,
_quarto-website.yml, _extensions/, *.qmd site pages, styles*.css/scss,
reveal.js filters, macros/ (submodule), lychee.toml, pre-render.py,
_repo-links.lua, references.qmd.R/, man/ (generated), NAMESPACE
(generated), tests/testthat/, vignettes/, data-raw/, altdoc/,
NEWS.md, renv.lock, codecov.yml, CHECKLIST.md.DESCRIPTION becomes a full package: real Imports:/Suggests:,
Roxygen: list(markdown = TRUE), Config/testthat/edition: 3,
VignetteBuilder, Config/Needs/website: quarto. Move any prose content into
a vignette (.qmd/.Rmd) under vignettes/._quarto.yml) via the
docs.yaml workflow. The rpt template uses the lab's own altdoc config —
a committed altdoc/ directory (altdoc/quarto_website.yml, _extensions/,
scripts/) plus a custom d-morrison/altdoc fork — so render_docs()
generates .qmd files into altdoc/man/ from man/*.Rd at build time (not
committed), then renders the site. Mirror rpt's altdoc/ directory rather
than configuring altdoc from scratch.qwt)_quarto.yml (with profile: default: website) and
_quarto-website.yml (project.type: website, output-dir: _site, the
website: nav/footer block). Add index.qmd, chapters/, references.qmd +
references.bib, styles.css, _extensions/, the reveal.js slide files
(styles-reveal.scss, qwt-reveal-toggle.html, revealjs-*.lua),
lychee.toml, and the macros/ submodule.R/<pkg>-package.R, man/, NAMESPACE,
DESCRIPTION with Depends/Suggests) — it's what gives the repo R tooling.qbt)_quarto.yml with project.type: book (output-dir: docs,
pre-render: pre-render.py) and a book: block listing chapters:
(index.qmd, chapter*.qmd, references.qmd) and appendices:. Add
pre-render.py, macros-header.html, styles.css, references.bib,
lychee.toml, and the macros/ submodule.DESCRIPTION is minimal (Type: Book, no Imports/Roxygen). The book
template is not a full R package — there's no R//NAMESPACE, and qbt
carries no top-level CLAUDE.md. Drop the package skeleton if converting from
a package or light-package format.qmt)_quarto.yml with project.type: manuscript
(output-dir: _manuscript) and a manuscript: block (article: index.qmd,
notebooks:). Add index.qmd (the article), notebooks/ (supplementary
notebooks), _repo-links.lua, _extensions/, styles.css, references.bib,
lychee.toml.Replace the source's .github/workflows/ with the target's set (keeping the
shared four from Step 3). The format-specific workflows:
rpt): R-CMD-check.yaml, R-check-docs.yml,
check-readme.yaml, docs.yaml (altdoc deploy), lint-changed-files.yaml,
news.yaml, pr-commands.yaml, test-coverage.yaml, version-check.yaml.check-bibliography-dois.yml, check-links.yml,
check-non-standard-chars.{yaml,yml} (the extension varies by template —
.yaml in qwt/qmt, .yml in qbt), lint-project.yaml, preview.yml,
publish.yml (deploy to gh-pages), summary.yml. The website and
manuscript formats also carry lint-changed-files.yaml; the book format does
not.Update each workflow's repo-specific inputs (output dir, deploy paths, package
name). Don't hand-rewrite reusable-workflow logic — adjust the caller's with:.
Run the checks the target format uses, not the source's:
devtools::document() (sync man//NAMESPACE),
lintr::lint_package(), devtools::test(), devtools::check(); add a
NEWS.md bullet.quarto render (output lands in the format's output dir),
lintr::lint_dir(), spell check against inst/WORDLIST, link check
(lychee.toml), and scan the rendered HTML for broken cross-refs/citations
(the crr / check-rendered-refs skill).Then open the PR (Closes #<issue>), explain the source → target conversion in
the body, and ARDI it to clean.
macros/ is a git submodule in qwt/qbt — add it with
git submodule add <url> macros, don't copy the files. Read <url> from the
target template's .gitmodules (currently
https://github.com/d-morrison/macros).man/, NAMESPACE, README.md, _site//docs//
_manuscript/) are build outputs — regenerate them, don't hand-edit._quarto.yml project block and the content
entrypoints.