You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .agents/skills/polylith/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@
8
8
Two kinds of skill live under this directory; the distinction matters when picking an entry point:
9
9
10
10
-**Atomic skills (`polylith-*`).** Each maps to one `poly` CLI command (or one focused concept). Safe to load in isolation; individually composable. These cover everyday Polylith workflows — creating bricks, syncing, checking, inspecting, and so on.
11
-
-**Orchestrated skill set (`migrate-project/migrate-*`).** A multi-phase workflow with shared state (`migration/<PROJECT>/state.md`) and a git safety net. **Never load an individual `migrate-*` skill directly** — always load `migrate-orchestrator` and let it drive the phases in order. See [`migrate-project/README.md`](./migrate-project/README.md). This is an advanced, explicit-opt-in workflow used for migrating a **non-Polylith** project into a Polylith workspace, **not** part of daily Polylith use.
11
+
-**Orchestrated skill set (`migrate-project/polylith-migrate-*`).** A multi-phase workflow with shared state (`migration/<PROJECT>/state.md`) and a git safety net. **Never load an individual `polylith-migrate-*` skill directly** — always load `polylith-migrate-orchestrator` and let it drive the phases in order. See [`migrate-project/README.md`](./migrate-project/README.md). This is an advanced, explicit-opt-in workflow used for migrating a **non-Polylith** project into a Polylith workspace, **not** part of daily Polylith use.
12
12
13
13
## Available Skills (daily Polylith workflows)
14
14
@@ -31,4 +31,4 @@ Two kinds of skill live under this directory; the distinction matters when picki
31
31
32
32
## Advanced workflow
33
33
34
-
For migrating an existing **non-Polylith** Python project into a Polylith workspace, see [`migrate-project/README.md`](./migrate-project/README.md). This is a destructive, multi-phase, explicit-opt-in workflow — start with the `migrate-orchestrator` skill, not any individual `migrate-*` sub-skill.
34
+
For migrating an existing **non-Polylith** Python project into a Polylith workspace, see [`migrate-project/README.md`](./migrate-project/README.md). This is a destructive, multi-phase, explicit-opt-in workflow — start with the `polylith-migrate-orchestrator` skill, not any individual `polylith-migrate-*` sub-skill.
Copy file name to clipboardExpand all lines: .agents/skills/polylith/migrate-project/README.md
+21-21Lines changed: 21 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,10 +1,10 @@
1
1
# Project Migration Skills
2
2
3
-
> **Note for contributors:** this README is a **human reference** and a skill **index**. Agents load each `migrate-*/SKILL.md` independently via the skill loader; this README is **not** auto-loaded with any skill. Anything an agent must know to act has to live in the relevant `SKILL.md` itself, not here.
3
+
> **Note for contributors:** this README is a **human reference** and a skill **index**. Agents load each `polylith-migrate-*/SKILL.md` independently via the skill loader; this README is **not** auto-loaded with any skill. Anything an agent must know to act has to live in the relevant `SKILL.md` itself, not here.
4
4
5
5
This directory contains skills for migrating **non-Polylith Python projects** into a Polylith workspace. They cooperate via two artifacts under `migration/<PROJECT>/`:
6
6
7
-
-`state.md` — a flat `KEY=value` file. Canonical schema lives in [`migrate-discover/SKILL.md`](./migrate-discover/SKILL.md).
7
+
-`state.md` — a flat `KEY=value` file. Canonical schema lives in [`polylith-migrate-discover/SKILL.md`](./polylith-migrate-discover/SKILL.md).
8
8
-`manifest.md` — a human-readable structural inventory of the source project.
9
9
10
10
---
@@ -28,21 +28,21 @@ This directory contains skills for migrating **non-Polylith Python projects** in
28
28
Load the orchestrator and let it drive the rest:
29
29
30
30
```
31
-
Load the `migrate-orchestrator` skill and migrate `projects/<project-name>`.
31
+
Load the `polylith-migrate-orchestrator` skill and migrate `projects/<project-name>`.
32
32
```
33
33
34
34
The orchestrator will:
35
35
1. Ask the user for explicit confirmation.
36
36
2. Establish a git safety net (dedicated branch + per-phase commits).
37
37
3. Load and execute each phase skill in order, verifying after each.
38
38
39
-
> **Why every sub-skill says "do not load directly".** Each `migrate-<phase>` skill's `description:` starts with a redirect to `migrate-orchestrator`. This is intentional: it makes the orchestrator the only valid entry point regardless of which sub-skill the agent's fuzzy-match initially favours. The sub-skills depend on state (`migration/<PROJECT>/state.md`) and a git safety net that only the orchestrator sets up.
39
+
> **Why every sub-skill says "do not load directly".** Each `polylith-migrate-<phase>` skill's `description:` starts with a redirect to `polylith-migrate-orchestrator`. This is intentional: it makes the orchestrator the only valid entry point regardless of which sub-skill the agent's fuzzy-match initially favours. The sub-skills depend on state (`migration/<PROJECT>/state.md`) and a git safety net that only the orchestrator sets up.
40
40
41
41
---
42
42
43
43
## Downstream installation
44
44
45
-
When this skill set is installed into another Polylith workspace (e.g. via a skills package), the in-skill `[ENTRY POINT]` / `[Internal sub-skill of migrate-orchestrator …]` markers in each `description:` are the primary routing signal — they ship with the package.
45
+
When this skill set is installed into another Polylith workspace (e.g. via a skills package), the in-skill `[ENTRY POINT]` / `[Internal sub-skill of polylith-migrate-orchestrator …]` markers in each `description:` are the primary routing signal — they ship with the package.
46
46
47
47
For an extra-strong signal, downstream consumers should add the following snippet to their own repo-level `AGENTS.md` (or equivalent agent-routing file). It is **not** required — the in-skill markers are usually sufficient — but it removes any ambiguity for agents that read `AGENTS.md` before scanning skill descriptions.
48
48
@@ -51,10 +51,10 @@ For an extra-strong signal, downstream consumers should add the following snippe
51
51
52
52
When the user asks to migrate a non-Polylith Python project to Polylith
53
53
(e.g. "migrate `projects/<name>` to Polylith"), load the
54
-
`migrate-orchestrator` skill first and let it drive the workflow.
54
+
`polylith-migrate-orchestrator` skill first and let it drive the workflow.
55
55
56
-
Never load `migrate-discover`, `migrate-extract-to-base`, or any other
57
-
`migrate-*` sub-skill directly — they are phases the orchestrator
56
+
Never load `polylith-migrate-discover`, `polylith-migrate-extract-to-base`, or any other
57
+
`polylith-migrate-*` sub-skill directly — they are phases the orchestrator
58
58
invokes in order, with per-phase verification and git checkpoints
59
59
between them.
60
60
```
@@ -64,7 +64,7 @@ between them.
64
64
## Workflow at a glance
65
65
66
66
The **authoritative** phase order, numbering, and dependencies live in
67
-
[`migrate-orchestrator/SKILL.md`](./migrate-orchestrator/SKILL.md) — it is the
67
+
[`polylith-migrate-orchestrator/SKILL.md`](./polylith-migrate-orchestrator/SKILL.md) — it is the
68
68
**single source of truth**. This README intentionally does **not** repeat the
69
69
table, to avoid drift (sub-skills must not hardcode phase numbers either; they
|[`migrate-convert-linter`](./migrate-convert-linter/SKILL.md)| Align the project's linter/formatter with the **workspace's** configured tool. |`CONVERT_LINTER=yes` in `state.md`. Runs between `migrate-discover` and `migrate-analyze-imports`. |
86
-
|[`migrate-convert-type-checker`](./migrate-convert-type-checker/SKILL.md)| Align the project's type checker with the **workspace's** configured tool. |`CONVERT_TYPE_CHECKER=yes` in `state.md`. Runs between `migrate-discover` and `migrate-analyze-imports`. |
87
-
|[`migrate-convert-package-manager`](./migrate-convert-package-manager/SKILL.md)| Convert the project's `pyproject.toml` to uv workspaces. **Opinionated about uv** — only run when the workspace itself uses uv. |`CONVERT_PACKAGE_MANAGER=yes` in `state.md`. Runs between `migrate-discover` and `migrate-analyze-imports`. |
88
-
|[`migrate-dedupe`](./migrate-dedupe/SKILL.md)| Identify and apply controlled deduplication discovered during refactoring. | User approval. Runs after `migrate-split-big-component` or `migrate-extract-standalone-modules`. |
85
+
|[`polylith-migrate-convert-linter`](./polylith-migrate-convert-linter/SKILL.md)| Align the project's linter/formatter with the **workspace's** configured tool. |`CONVERT_LINTER=yes` in `state.md`. Runs between `polylith-migrate-discover` and `polylith-migrate-analyze-imports`. |
86
+
|[`polylith-migrate-convert-type-checker`](./polylith-migrate-convert-type-checker/SKILL.md)| Align the project's type checker with the **workspace's** configured tool. |`CONVERT_TYPE_CHECKER=yes` in `state.md`. Runs between `polylith-migrate-discover` and `polylith-migrate-analyze-imports`. |
87
+
|[`polylith-migrate-convert-package-manager`](./polylith-migrate-convert-package-manager/SKILL.md)| Convert the project's `pyproject.toml` to uv workspaces. **Opinionated about uv** — only run when the workspace itself uses uv. |`CONVERT_PACKAGE_MANAGER=yes` in `state.md`. Runs between `polylith-migrate-discover` and `polylith-migrate-analyze-imports`. |
88
+
|[`polylith-migrate-dedupe`](./polylith-migrate-dedupe/SKILL.md)| Identify and apply controlled deduplication discovered during refactoring. | User approval. Runs after `polylith-migrate-split-big-component` or `polylith-migrate-extract-standalone-modules`. |
89
89
90
90
---
91
91
@@ -95,17 +95,17 @@ These skills overlap in vocabulary but address different scopes. Use this matrix
|`migrate-split-big-component`| Within one project; component → multiple components. | The temporary big component (from `migrate-isolate-base-and-big-component`) is too large. |
99
-
|`migrate-extract-standalone-modules`| Within one project; pulls foundational modules out of the residual. | Residual still contains `consts.py`/`exceptions.py`/`models.py`. |
100
-
|`migrate-split-component-internals`| Within one already-extracted shared component; `core.py` → multiple files. | A component's `core.py` mixes multiple domains internally. |
101
-
|`migrate-isolate-shared-and-project-logic`| Cross-project; separate shared vs project-specific in components used by ≥ 2 projects. | Migrating a 2nd+ project that overlaps with an already-extracted one. |
98
+
|`polylith-migrate-split-big-component`| Within one project; component → multiple components. | The temporary big component (from `polylith-migrate-isolate-base-and-big-component`) is too large. |
99
+
|`polylith-migrate-extract-standalone-modules`| Within one project; pulls foundational modules out of the residual. | Residual still contains `consts.py`/`exceptions.py`/`models.py`. |
100
+
|`polylith-migrate-split-component-internals`| Within one already-extracted shared component; `core.py` → multiple files. | A component's `core.py` mixes multiple domains internally. |
101
+
|`polylith-migrate-isolate-shared-and-project-logic`| Cross-project; separate shared vs project-specific in components used by ≥ 2 projects. | Migrating a 2nd+ project that overlaps with an already-extracted one. |
102
102
103
-
> 💡 In a fresh migration of a single project, you usually run `migrate-split-big-component` → `migrate-extract-standalone-modules` → `migrate-split-component-internals`, and skip `migrate-isolate-shared-and-project-logic` until a second project is migrated.
103
+
> 💡 In a fresh migration of a single project, you usually run `polylith-migrate-split-big-component` → `polylith-migrate-extract-standalone-modules` → `polylith-migrate-split-component-internals`, and skip `polylith-migrate-isolate-shared-and-project-logic` until a second project is migrated.
104
104
105
105
---
106
106
107
107
## Files in this directory
108
108
109
109
-`README.md` — this file (human reference + index).
110
-
-`migrate-orchestrator/SKILL.md` — entry point; defines the phase order and the git safety net.
111
-
-`migrate-<phase>/SKILL.md` — one per phase referenced in the orchestrator table.
110
+
-`polylith-migrate-orchestrator/SKILL.md` — entry point; defines the phase order and the git safety net.
111
+
-`polylith-migrate-<phase>/SKILL.md` — one per phase referenced in the orchestrator table.
Copy file name to clipboardExpand all lines: .agents/skills/polylith/migrate-project/polylith-migrate-analyze-imports/SKILL.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,9 +1,9 @@
1
1
---
2
-
name: migrate-analyze-imports
3
-
description: "[Internal sub-skill of `migrate-orchestrator`. Do not load directly — load `migrate-orchestrator` first, which drives all phases.] Analyze the project's import graph to find how the original namespace is referenced, choose the namespace-rewrite strategy (shim vs shimless), detect circular imports, and list symbols exported by the original namespace."
2
+
name: polylith-migrate-analyze-imports
3
+
description: "[Internal sub-skill of `polylith-migrate-orchestrator`. Do not load directly — load `polylith-migrate-orchestrator` first, which drives all phases.] Analyze the project's import graph to find how the original namespace is referenced, choose the namespace-rewrite strategy (shim vs shimless), detect circular imports, and list symbols exported by the original namespace."
4
4
---
5
5
6
-
# Skill: migrate-analyze-imports
6
+
# Skill: polylith-migrate-analyze-imports
7
7
8
8
## Goal
9
9
Analyze the project's import graph to:
@@ -13,7 +13,7 @@ Analyze the project's import graph to:
13
13
4. Detect potential circular imports.
14
14
15
15
This drives the namespace rewrite (phase 4) and, when `SHIM_STRATEGY=shim`, the
16
-
shim sub-track (phase 4b). See the `migrate-orchestrator` table for phase numbers.
16
+
shim sub-track (phase 4b). See the `polylith-migrate-orchestrator` table for phase numbers.
17
17
18
18
## Inputs
19
19
- Project name (from `migration/<project-name>/state.md`)
Copy file name to clipboardExpand all lines: .agents/skills/polylith/migrate-project/polylith-migrate-automate-import-updates/SKILL.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,21 @@
1
1
---
2
-
name: migrate-automate-import-updates
3
-
description: "[Internal sub-skill of `migrate-orchestrator`. Do not load directly — load `migrate-orchestrator` first, which drives all phases.] Update imports in the new base location to reference the new namespace instead of the original namespace."
2
+
name: polylith-migrate-automate-import-updates
3
+
description: "[Internal sub-skill of `polylith-migrate-orchestrator`. Do not load directly — load `polylith-migrate-orchestrator` first, which drives all phases.] Update imports in the new base location to reference the new namespace instead of the original namespace."
4
4
---
5
5
6
-
# Skill: migrate-automate-import-updates
6
+
# Skill: polylith-migrate-automate-import-updates
7
7
8
8
## Goal
9
9
Update imports to reference the new namespace instead of the original namespace, ensuring that the codebase remains functional after the namespace migration.
10
10
11
-
> **Scope depends on `SHIM_STRATEGY`** (set by `migrate-analyze-imports`):
11
+
> **Scope depends on `SHIM_STRATEGY`** (set by `polylith-migrate-analyze-imports`):
12
12
> -`shim`: rewrite imports **in the new base location only** — external consumers keep
13
13
> using the original namespace via the shim (phase 4b).
14
14
> -`shimless`: rewrite **every** reference to the original namespace — base internals,
15
15
> entrypoints / run-scripts, infra (e.g. `alembic/env.py`), and tests — so nothing
16
16
> imports the old namespace and no shim is needed.
17
17
>
18
-
> Cover **all three reference forms** (see `migrate-analyze-imports`): dotted
18
+
> Cover **all three reference forms** (see `polylith-migrate-analyze-imports`): dotted
0 commit comments