docs(motoko): update guides for new icskills — --default-persistent-actors, inline migration, mops-cli
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
- Issue type
- Documentation
- Clarity
- Clearly specified
- Activity status
- Quiet
- Domain
- cli, documentation
Research direction
Wait for PR #208 to merge, then inspect the .sources/icskills submodule and grep the listed documentation files for persistent actor. Update the recommended Motoko, migration, timer, and mops guidance described in the checklist, and verify the submodule is pinned to 4713d1e with no out-of-scope files changed.
Written by the indexing model from the issue text.
Description
Background
The icskills submodule is currently pinned at 1d125a9; remote origin/main is at 4713d1e. That commit adds three new skills and substantially rewrites the existing motoko skill:
| Skill | Change |
|---|---|
motoko |
Major overhaul: --default-persistent-actors is now the standard; dot notation (M0236) and implicit comparators (M0237) required; mixins added; moc 1.7.0 pinned |
migrating-motoko |
New: (with migration = ...) inline syntax for one-shot state migrations |
migrating-motoko-enhanced |
New: multi-step migration with a migrations/ directory and mops-managed --enhanced-migration flag |
mops-cli |
New: full toolchain coverage (check, build, test, lint, migrate, toolchain) |
Scope
This is a single PR that bumps the submodule from 1d125a9 to 4713d1e and updates the docs to match. The two must ship together: bumping without updating the docs would leave persistent actor in every code example while the pinned skill recommends plain actor {} with --default-persistent-actors.
Required changes
Bump icskills submodule
- Pin
.sources/icskillsto4713d1e
Add --default-persistent-actors and drop persistent actor from code examples
With the flag in mops.toml, plain actor { } works and all state is persistent by default. Keeping persistent actor in code examples while recommending the flag is contradictory.
[moc]
args = ["--default-persistent-actors", "-W=M0236,M0237,M0223"]
- Add
--default-persistent-actorsto the recommendedmops.tomlsetup inguides/backends/data-persistence.mdx,concepts/orthogonal-persistence.md, andguides/canister-management/lifecycle.mdx - Replace
persistent actorwithactorin all Motoko code examples (approx. 50 occurrences in 30+ files — grep first to get the full list) - Keep
persistent actoronly in explanatory prose where the keyword itself is being discussed
Files known to contain persistent actor in code blocks:
guides/backends/data-persistence.mdx
guides/backends/timers.mdx
guides/backends/certified-variables.md
guides/chain-fusion/bitcoin.mdx
guides/chain-fusion/ethereum.mdx
guides/chain-fusion/solana.mdx
guides/chain-fusion/exchange-rates.mdx
guides/canister-management/lifecycle.mdx
guides/canister-management/cycles-management.mdx
guides/security/canister-upgrades.md
guides/security/access-management.mdx
guides/canister-calls/inter-canister-calls.mdx
guides/canister-calls/parallel-inter-canister-calls.mdx
guides/digital-assets/ledgers.mdx
guides/authentication/internet-identity.mdx
references/application-canisters.md
Document (with migration = ...) inline migration syntax
The canister upgrade guides recommend avoiding preupgrade/postupgrade but say nothing about what to do when a field type changes or a field is renamed. That answer is now the inline migration syntax.
- Add a "Changing persistent state" subsection to
guides/canister-management/lifecycle.mdxcovering(with migration = ...) - Update
guides/security/canister-upgrades.mdto reference the migration syntax for incompatible type changes
Update timer re-registration pattern
guides/backends/timers.mdx uses system func postupgrade to re-register timers. The new skill identifies timer IDs as the canonical transient var use case.
- Update
guides/backends/timers.mdxto presenttransient varas the preferred pattern and movepostupgradeto a note for legacy or complex cases
Document mops CLI commands in developer tools
references/developer-tools.md mentions mops but not its primary commands.
- Add coverage of
mops check,mops build,mops test,mops lint, andmops migratetoreferences/developer-tools.md
Out of scope
postupgradeincertified-variables.mdandcertification.md: legitimate use for re-establishing certifications after upgrade, not data migrationdocs/languages/motoko/: auto-synced from caffeinelabs/motoko, not manually edited
Prerequisite
Wait for PR #208 to merge before starting. Several affected files are modified by that PR.
- Dominant language
- JavaScript
- Stars
- 4
- Forks
- 5
- Avg merge
- 1d 6h
- Merged PRs (30d)
- 30
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dfinity/developer-docs
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
dfinity/developer-docs#281 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
dfinity/developer-docs#279 ·
-
docs: cycle cost docs follow-up — ICP formula, worked example, instruction profiling, cost traps Open
Difficulty 4/5 3-5 days Newbie friendliness 68/100
dfinity/developer-docs#274 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 65/100
dfinity/developer-docs#228 ·
-
feat(bitcoin): add region markers to basic_bitcoin examples for stable developer workflow embeds Openenhancement
Difficulty 4/5 3-5 days Newbie friendliness 52/100
dfinity/developer-docs#168 ·
All issues in dfinity/developer-docs
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
HarperFast/skills#96 ·
-
[Block] Latest Posts [Type] Bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Automattic/studio#4908 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
sugarlabs/musicblocks#8847 ·