packwright 0.1.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. packwright-0.1.0rc1/.github/ISSUE_TEMPLATE/bug_report.yml +31 -0
  2. packwright-0.1.0rc1/.github/ISSUE_TEMPLATE/feature_request.yml +17 -0
  3. packwright-0.1.0rc1/.github/pull_request_template.md +10 -0
  4. packwright-0.1.0rc1/.github/workflows/ci.yml +44 -0
  5. packwright-0.1.0rc1/.github/workflows/release.yml +50 -0
  6. packwright-0.1.0rc1/CHANGELOG.md +15 -0
  7. packwright-0.1.0rc1/CONTRIBUTING.md +11 -0
  8. packwright-0.1.0rc1/LICENSE +21 -0
  9. packwright-0.1.0rc1/MANIFEST.in +17 -0
  10. packwright-0.1.0rc1/PKG-INFO +103 -0
  11. packwright-0.1.0rc1/README.md +69 -0
  12. packwright-0.1.0rc1/README.zh-CN.md +53 -0
  13. packwright-0.1.0rc1/SECURITY.md +11 -0
  14. packwright-0.1.0rc1/assets/mark-dark.svg +1 -0
  15. packwright-0.1.0rc1/assets/mark-light.svg +1 -0
  16. packwright-0.1.0rc1/assets/tokens.css +2 -0
  17. packwright-0.1.0rc1/docs/AGENT_ARCHETYPES.md +113 -0
  18. packwright-0.1.0rc1/docs/CHARACTER_DRAFTING.md +97 -0
  19. packwright-0.1.0rc1/docs/CLI.md +85 -0
  20. packwright-0.1.0rc1/docs/CODEX_CHARACTER_WORKFLOW.md +96 -0
  21. packwright-0.1.0rc1/docs/USE_WITH_YOUR_AGENT.md +15 -0
  22. packwright-0.1.0rc1/docs/releases/0.1.0rc1.md +16 -0
  23. packwright-0.1.0rc1/examples/character_intake.yaml +15 -0
  24. packwright-0.1.0rc1/pyproject.toml +49 -0
  25. packwright-0.1.0rc1/scripts/audit_public_tree.py +93 -0
  26. packwright-0.1.0rc1/scripts/audit_zero_network.py +111 -0
  27. packwright-0.1.0rc1/scripts/release-gate.sh +94 -0
  28. packwright-0.1.0rc1/setup.cfg +4 -0
  29. packwright-0.1.0rc1/site/index.html +34 -0
  30. packwright-0.1.0rc1/specs/reserved/emotion-engine.yaml +21 -0
  31. packwright-0.1.0rc1/specs/reserved/runtime-surface.yaml +16 -0
  32. packwright-0.1.0rc1/src/packwright/__init__.py +3 -0
  33. packwright-0.1.0rc1/src/packwright/__main__.py +5 -0
  34. packwright-0.1.0rc1/src/packwright/adapters/__init__.py +10 -0
  35. packwright-0.1.0rc1/src/packwright/adapters/claude_code.py +390 -0
  36. packwright-0.1.0rc1/src/packwright/adapters/codex.py +324 -0
  37. packwright-0.1.0rc1/src/packwright/adapters/cursor.py +389 -0
  38. packwright-0.1.0rc1/src/packwright/checker/__init__.py +3 -0
  39. packwright-0.1.0rc1/src/packwright/checker/scoring.py +924 -0
  40. packwright-0.1.0rc1/src/packwright/cli.py +918 -0
  41. packwright-0.1.0rc1/src/packwright/core/__init__.py +51 -0
  42. packwright-0.1.0rc1/src/packwright/core/adapter_layout.py +35 -0
  43. packwright-0.1.0rc1/src/packwright/core/adopt.py +199 -0
  44. packwright-0.1.0rc1/src/packwright/core/character_intake.py +1648 -0
  45. packwright-0.1.0rc1/src/packwright/core/emotion_engine_contract.py +147 -0
  46. packwright-0.1.0rc1/src/packwright/core/errors.py +13 -0
  47. packwright-0.1.0rc1/src/packwright/core/handoff.py +531 -0
  48. packwright-0.1.0rc1/src/packwright/core/install.py +1913 -0
  49. packwright-0.1.0rc1/src/packwright/core/intake_contract.py +105 -0
  50. packwright-0.1.0rc1/src/packwright/core/knowledge_contract.py +212 -0
  51. packwright-0.1.0rc1/src/packwright/core/loader.py +35 -0
  52. packwright-0.1.0rc1/src/packwright/core/memory_projection.py +126 -0
  53. packwright-0.1.0rc1/src/packwright/core/naming.py +87 -0
  54. packwright-0.1.0rc1/src/packwright/core/pack_metadata.py +86 -0
  55. packwright-0.1.0rc1/src/packwright/core/resolver.py +66 -0
  56. packwright-0.1.0rc1/src/packwright/core/validation.py +660 -0
  57. packwright-0.1.0rc1/src/packwright/core/workspace_contract.py +102 -0
  58. packwright-0.1.0rc1/src/packwright.egg-info/PKG-INFO +103 -0
  59. packwright-0.1.0rc1/src/packwright.egg-info/SOURCES.txt +100 -0
  60. packwright-0.1.0rc1/src/packwright.egg-info/dependency_links.txt +1 -0
  61. packwright-0.1.0rc1/src/packwright.egg-info/entry_points.txt +2 -0
  62. packwright-0.1.0rc1/src/packwright.egg-info/requires.txt +9 -0
  63. packwright-0.1.0rc1/src/packwright.egg-info/top_level.txt +1 -0
  64. packwright-0.1.0rc1/templates/atlas-work/emotion/memory-events.yaml +17 -0
  65. packwright-0.1.0rc1/templates/atlas-work/emotion/model.yaml +31 -0
  66. packwright-0.1.0rc1/templates/atlas-work/emotion/state-schema.yaml +22 -0
  67. packwright-0.1.0rc1/templates/atlas-work/emotion/update-policy.yaml +53 -0
  68. packwright-0.1.0rc1/templates/atlas-work/emotion/voice-modulation.yaml +15 -0
  69. packwright-0.1.0rc1/templates/atlas-work/identity/persona.md +39 -0
  70. packwright-0.1.0rc1/templates/atlas-work/identity/relationship.md +15 -0
  71. packwright-0.1.0rc1/templates/atlas-work/identity/voice.md +32 -0
  72. packwright-0.1.0rc1/templates/atlas-work/mechanism/context-loading.yaml +39 -0
  73. packwright-0.1.0rc1/templates/atlas-work/mechanism/memory-policy.yaml +84 -0
  74. packwright-0.1.0rc1/templates/atlas-work/mechanism/session-guards.yaml +18 -0
  75. packwright-0.1.0rc1/templates/atlas-work/mechanism.yaml +542 -0
  76. packwright-0.1.0rc1/templates/atlas-work/memory/collaboration.md +16 -0
  77. packwright-0.1.0rc1/templates/atlas-work/memory/emotion-state.json.example +25 -0
  78. packwright-0.1.0rc1/templates/atlas-work/memory/index.md +33 -0
  79. packwright-0.1.0rc1/templates/atlas-work/memory/knowledge_map.md +10 -0
  80. packwright-0.1.0rc1/templates/atlas-work/memory/pinned.md +11 -0
  81. packwright-0.1.0rc1/templates/atlas-work/memory/profile.md +24 -0
  82. packwright-0.1.0rc1/templates/atlas-work/memory/projects/_template.md +25 -0
  83. packwright-0.1.0rc1/templates/atlas-work/memory/recent-activity.md +9 -0
  84. packwright-0.1.0rc1/templates/atlas-work/memory/relationship-state.md +17 -0
  85. packwright-0.1.0rc1/templates/atlas-work/memory/session-index.md +11 -0
  86. packwright-0.1.0rc1/templates/atlas-work/memory/source-map.md +18 -0
  87. packwright-0.1.0rc1/templates/atlas-work/memory/todos.md +9 -0
  88. packwright-0.1.0rc1/templates/atlas-work/memory/workstreams/_template.md +35 -0
  89. packwright-0.1.0rc1/templates/atlas-work/memory/workstreams.md +43 -0
  90. packwright-0.1.0rc1/templates/atlas-work/operating/boundaries.md +23 -0
  91. packwright-0.1.0rc1/templates/atlas-work/operating/principles.md +21 -0
  92. packwright-0.1.0rc1/templates/atlas-work/projection/ownership-contract.yaml +69 -0
  93. packwright-0.1.0rc1/templates/atlas-work/projection/platform-capabilities.yaml +42 -0
  94. packwright-0.1.0rc1/templates/atlas-work/skills/save-context/SKILL.md +22 -0
  95. packwright-0.1.0rc1/templates/atlas-work/workspace/README.md +19 -0
  96. packwright-0.1.0rc1/templates/atlas-work/workspace/_template/archive/.gitkeep +1 -0
  97. packwright-0.1.0rc1/templates/atlas-work/workspace/_template/artifacts/.gitkeep +1 -0
  98. packwright-0.1.0rc1/templates/atlas-work/workspace/_template/drafts/.gitkeep +1 -0
  99. packwright-0.1.0rc1/templates/atlas-work/workspace/shared/.gitkeep +1 -0
  100. packwright-0.1.0rc1/templates/character_intake.example.yaml +35 -0
  101. packwright-0.1.0rc1/tests/test_mvp_chain.py +2258 -0
  102. packwright-0.1.0rc1/tests/test_release_audits.py +117 -0
@@ -0,0 +1,31 @@
1
+ name: Bug report
2
+ description: Report a reproducible Packwright defect using synthetic data.
3
+ title: "[bug] "
4
+ body:
5
+ - type: input
6
+ id: version
7
+ attributes:
8
+ label: Packwright version
9
+ placeholder: Output of packwright --version
10
+ validations:
11
+ required: true
12
+ - type: dropdown
13
+ id: adapter
14
+ attributes:
15
+ label: Adapter
16
+ options: [codex, claude-code, cursor, not adapter-specific]
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ id: reproduce
21
+ attributes:
22
+ label: Reproduction
23
+ description: Include commands and sanitized output. Never attach real memory or credentials.
24
+ validations:
25
+ required: true
26
+ - type: textarea
27
+ id: expected
28
+ attributes:
29
+ label: Expected behavior
30
+ validations:
31
+ required: true
@@ -0,0 +1,17 @@
1
+ name: Feature request
2
+ description: Propose a focused improvement to the public v0.1 workflow.
3
+ title: "[feature] "
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem
9
+ description: What user problem should Packwright solve?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: outcome
14
+ attributes:
15
+ label: Desired outcome
16
+ validations:
17
+ required: true
@@ -0,0 +1,10 @@
1
+ ## Summary
2
+
3
+ Describe the user-visible change and its v0.1 scope.
4
+
5
+ ## Verification
6
+
7
+ - [ ] `scripts/release-gate.sh --quick`
8
+ - [ ] Tests cover the changed behavior
9
+ - [ ] No real memory, credentials, private paths, or build artifacts are included
10
+ - [ ] Migration changes preserve dry-run, confirmation, and receipt semantics
@@ -0,0 +1,44 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
17
+ steps:
18
+ - uses: actions/checkout@v6
19
+ with:
20
+ fetch-depth: 0
21
+ - uses: actions/setup-python@v5
22
+ with:
23
+ python-version: ${{ matrix.python }}
24
+ - run: python -m pip install -e '.[test]'
25
+ - run: scripts/release-gate.sh --quick
26
+
27
+ package:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v6
31
+ with:
32
+ fetch-depth: 0
33
+ - uses: actions/setup-python@v5
34
+ with:
35
+ python-version: "3.14"
36
+ - run: python -m pip install -e '.[test]'
37
+ - run: scripts/release-gate.sh --output-dir "$RUNNER_TEMP/packwright-dist"
38
+ - uses: actions/upload-artifact@v4
39
+ with:
40
+ name: packwright-0.1.0rc1
41
+ path: |
42
+ ${{ runner.temp }}/packwright-dist/*.whl
43
+ ${{ runner.temp }}/packwright-dist/*.tar.gz
44
+ ${{ runner.temp }}/packwright-dist/release-artifacts.json
@@ -0,0 +1,50 @@
1
+ name: Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ name: Build and verify distributions
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v6
16
+ with:
17
+ fetch-depth: 0
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.14"
21
+ - name: Verify release tag matches package version
22
+ run: |
23
+ PACKAGE_VERSION="$(python -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')"
24
+ test "$GITHUB_REF_NAME" = "v$PACKAGE_VERSION"
25
+ - run: python -m pip install -e '.[test]'
26
+ - run: scripts/release-gate.sh --output-dir "$RUNNER_TEMP/packwright-dist"
27
+ - uses: actions/upload-artifact@v4
28
+ with:
29
+ name: python-package-distributions
30
+ path: |
31
+ ${{ runner.temp }}/packwright-dist/*.whl
32
+ ${{ runner.temp }}/packwright-dist/*.tar.gz
33
+ if-no-files-found: error
34
+
35
+ publish:
36
+ name: Publish distributions to PyPI
37
+ needs: build
38
+ runs-on: ubuntu-latest
39
+ environment:
40
+ name: pypi
41
+ url: https://pypi.org/p/packwright
42
+ permissions:
43
+ id-token: write
44
+ steps:
45
+ - uses: actions/download-artifact@v5
46
+ with:
47
+ name: python-package-distributions
48
+ path: dist
49
+ - name: Publish distributions to PyPI
50
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,15 @@
1
+ # Changelog
2
+
3
+ All notable changes are documented here. Packwright follows Semantic Versioning.
4
+
5
+ ## [0.1.0rc1] - 2026-07-11
6
+
7
+ ### Added
8
+
9
+ - Six-command public CLI: `init`, `build`, `install`, `migrate`, `doctor`, and `score`.
10
+ - Native projections for Codex, Claude Code, and Cursor.
11
+ - Read-only migration plans with path-level generated, carried, rewritten, and excluded receipts.
12
+ - Self-contained installed-target metadata and pre/post-install scoring.
13
+ - Static zero-network audit, local release gate, packaging checks, and CI.
14
+
15
+ [0.1.0rc1]: https://github.com/pioneerjeff-labs/packwright/releases/tag/v0.1.0rc1
@@ -0,0 +1,11 @@
1
+ # Contributing
2
+
3
+ Packwright accepts focused bug fixes, tests, documentation corrections, and adapter improvements.
4
+
5
+ 1. Create a branch from `main`.
6
+ 2. Install development tools with `python -m pip install -e '.[dev]'`.
7
+ 3. Run `scripts/release-gate.sh --quick` while iterating.
8
+ 4. Run `scripts/release-gate.sh` before opening a pull request.
9
+ 5. Explain user-visible behavior and add or update tests.
10
+
11
+ Do not include real agent memory, credentials, private paths, or generated build artifacts. Migration changes must preserve the dry-run-before-write contract and report every generated, carried, rewritten, and excluded path.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 pioneerjeff-labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,17 @@
1
+ include LICENSE
2
+ include CHANGELOG.md
3
+ include CONTRIBUTING.md
4
+ include README.md
5
+ include README.zh-CN.md
6
+ include SECURITY.md
7
+ recursive-include docs *.md
8
+ recursive-include examples *.yaml *.md
9
+ recursive-include assets *.css *.svg
10
+ recursive-include site *.html *.css *.svg
11
+ recursive-include templates *
12
+ recursive-include specs *.yaml
13
+ recursive-include tests *.py
14
+ recursive-include scripts *.py *.sh
15
+ recursive-include .github *.yml *.yaml *.md
16
+ global-exclude *.py[cod]
17
+ global-exclude .DS_Store
@@ -0,0 +1,103 @@
1
+ Metadata-Version: 2.4
2
+ Name: packwright
3
+ Version: 0.1.0rc1
4
+ Summary: Agent pack compiler for Codex, Claude Code, and Cursor.
5
+ Author: pioneerjeff-labs
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/pioneerjeff-labs/packwright
8
+ Project-URL: Documentation, https://github.com/pioneerjeff-labs/packwright#readme
9
+ Project-URL: Issues, https://github.com/pioneerjeff-labs/packwright/issues
10
+ Project-URL: Changelog, https://github.com/pioneerjeff-labs/packwright/blob/main/CHANGELOG.md
11
+ Keywords: agents,codex,claude-code,cursor,migration
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Environment :: Console
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.9
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development :: Build Tools
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: PyYAML>=6.0
27
+ Provides-Extra: test
28
+ Requires-Dist: build>=1.2; extra == "test"
29
+ Requires-Dist: twine>=5.1; extra == "test"
30
+ Provides-Extra: dev
31
+ Requires-Dist: build>=1.2; extra == "dev"
32
+ Requires-Dist: twine>=5.1; extra == "dev"
33
+ Dynamic: license-file
34
+
35
+ # Packwright
36
+
37
+ Packwright migrates a working coding-agent setup between Codex, Claude Code, and Cursor, showing exactly what will be generated, carried, rewritten, and excluded before it writes.
38
+
39
+ The output is plain files you can read.
40
+
41
+ > Packwright itself makes no network requests and sends no telemetry. Your files stay under your control; your coding runtime's own data policy still applies.
42
+
43
+ ## Quickstart
44
+
45
+ Install the current release candidate:
46
+
47
+ ```bash
48
+ python -m pip install packwright==0.1.0rc1
49
+ ```
50
+
51
+ Create an editable source and build it for one of the three adapters:
52
+
53
+ ```bash
54
+ packwright init --template creator -o work/mira
55
+ packwright build work/mira --adapter codex -o pack/mira-codex
56
+ packwright install pack/mira-codex --target project/mira-codex
57
+ ```
58
+
59
+ Supported adapters are `codex`, `claude-code`, and `cursor`. Codex emits `AGENTS.md` and `.agents/skills/`; Claude Code emits `CLAUDE.md` and `.claude/skills/`; Cursor emits `.cursor/rules/*.mdc`.
60
+
61
+ Preview a migration without creating its destination:
62
+
63
+ ```bash
64
+ packwright migrate project/mira-codex \
65
+ --to cursor \
66
+ --target project/mira-cursor \
67
+ --dry-run
68
+ ```
69
+
70
+ Review the generated, carried, rewritten, and excluded paths. Then apply that plan explicitly:
71
+
72
+ ```bash
73
+ packwright migrate project/mira-codex \
74
+ --to cursor \
75
+ --target project/mira-cursor \
76
+ --yes
77
+ packwright doctor project/mira-cursor
78
+ packwright score project/mira-cursor
79
+ ```
80
+
81
+ For machine-readable migration receipts, add `--json` to both the dry run and the confirmed run. Existing targets are not overwritten unless you separately opt into `--force`.
82
+
83
+ ## What the score means
84
+
85
+ Packwright validates the pack structure and its public artifact contract. A score of 100.0 means those rules pass; it does not claim that a coding runtime will behave perfectly. Runtime compatibility is verified separately.
86
+
87
+ Installed targets include self-contained `.packwright/` metadata, so `migrate`, `doctor`, and `score` do not depend on the original source or build directory. Migration receipts identify the small set of adapter-routing lines that Packwright may rewrite; carried files are hash-verified.
88
+
89
+ ## Use it through a coding agent
90
+
91
+ [Use Packwright with your coding agent](docs/USE_WITH_YOUR_AGENT.md) provides a paste-ready operating prompt. It requires a dry run, user confirmation, and a final receipt.
92
+
93
+ ## Documentation
94
+
95
+ - [CLI contract](docs/CLI.md)
96
+ - [Character drafting](docs/CHARACTER_DRAFTING.md)
97
+ - [Agent archetypes](docs/AGENT_ARCHETYPES.md)
98
+ - [Chinese README](README.zh-CN.md)
99
+ - [0.1.0rc1 release notes](docs/releases/0.1.0rc1.md)
100
+ - [Contributing](CONTRIBUTING.md)
101
+ - [Security](SECURITY.md)
102
+
103
+ Packwright is licensed under the [MIT License](LICENSE).
@@ -0,0 +1,69 @@
1
+ # Packwright
2
+
3
+ Packwright migrates a working coding-agent setup between Codex, Claude Code, and Cursor, showing exactly what will be generated, carried, rewritten, and excluded before it writes.
4
+
5
+ The output is plain files you can read.
6
+
7
+ > Packwright itself makes no network requests and sends no telemetry. Your files stay under your control; your coding runtime's own data policy still applies.
8
+
9
+ ## Quickstart
10
+
11
+ Install the current release candidate:
12
+
13
+ ```bash
14
+ python -m pip install packwright==0.1.0rc1
15
+ ```
16
+
17
+ Create an editable source and build it for one of the three adapters:
18
+
19
+ ```bash
20
+ packwright init --template creator -o work/mira
21
+ packwright build work/mira --adapter codex -o pack/mira-codex
22
+ packwright install pack/mira-codex --target project/mira-codex
23
+ ```
24
+
25
+ Supported adapters are `codex`, `claude-code`, and `cursor`. Codex emits `AGENTS.md` and `.agents/skills/`; Claude Code emits `CLAUDE.md` and `.claude/skills/`; Cursor emits `.cursor/rules/*.mdc`.
26
+
27
+ Preview a migration without creating its destination:
28
+
29
+ ```bash
30
+ packwright migrate project/mira-codex \
31
+ --to cursor \
32
+ --target project/mira-cursor \
33
+ --dry-run
34
+ ```
35
+
36
+ Review the generated, carried, rewritten, and excluded paths. Then apply that plan explicitly:
37
+
38
+ ```bash
39
+ packwright migrate project/mira-codex \
40
+ --to cursor \
41
+ --target project/mira-cursor \
42
+ --yes
43
+ packwright doctor project/mira-cursor
44
+ packwright score project/mira-cursor
45
+ ```
46
+
47
+ For machine-readable migration receipts, add `--json` to both the dry run and the confirmed run. Existing targets are not overwritten unless you separately opt into `--force`.
48
+
49
+ ## What the score means
50
+
51
+ Packwright validates the pack structure and its public artifact contract. A score of 100.0 means those rules pass; it does not claim that a coding runtime will behave perfectly. Runtime compatibility is verified separately.
52
+
53
+ Installed targets include self-contained `.packwright/` metadata, so `migrate`, `doctor`, and `score` do not depend on the original source or build directory. Migration receipts identify the small set of adapter-routing lines that Packwright may rewrite; carried files are hash-verified.
54
+
55
+ ## Use it through a coding agent
56
+
57
+ [Use Packwright with your coding agent](docs/USE_WITH_YOUR_AGENT.md) provides a paste-ready operating prompt. It requires a dry run, user confirmation, and a final receipt.
58
+
59
+ ## Documentation
60
+
61
+ - [CLI contract](docs/CLI.md)
62
+ - [Character drafting](docs/CHARACTER_DRAFTING.md)
63
+ - [Agent archetypes](docs/AGENT_ARCHETYPES.md)
64
+ - [Chinese README](README.zh-CN.md)
65
+ - [0.1.0rc1 release notes](docs/releases/0.1.0rc1.md)
66
+ - [Contributing](CONTRIBUTING.md)
67
+ - [Security](SECURITY.md)
68
+
69
+ Packwright is licensed under the [MIT License](LICENSE).
@@ -0,0 +1,53 @@
1
+ # Packwright
2
+
3
+ Packwright 可在 Codex、Claude Code 与 Cursor 之间迁移已经在工作的 coding agent 配置,并在写入之前准确展示将生成、原样携带、改写和排除的内容。
4
+
5
+ 输出是你可以直接阅读的普通文件。
6
+
7
+ > Packwright 自身不会发起任何网络请求,也不会发送遥测数据。你的文件始终由你控制;你所使用的 coding runtime 自身的数据政策仍然适用。
8
+
9
+ ## 快速开始
10
+
11
+ 安装当前候选版本:
12
+
13
+ ```bash
14
+ python -m pip install packwright==0.1.0rc1
15
+ ```
16
+
17
+ 创建可编辑的源文件、构建并安装:
18
+
19
+ ```bash
20
+ packwright init --template creator -o work/mira
21
+ packwright build work/mira --adapter codex -o pack/mira-codex
22
+ packwright install pack/mira-codex --target project/mira-codex
23
+ ```
24
+
25
+ 支持的 adapter 为 `codex`、`claude-code` 与 `cursor`。所有输出均为普通文件。
26
+
27
+ 先预览迁移,不创建目标目录:
28
+
29
+ ```bash
30
+ packwright migrate project/mira-codex \
31
+ --to cursor \
32
+ --target project/mira-cursor \
33
+ --dry-run
34
+ ```
35
+
36
+ 检查生成、原样携带、改写与排除清单后,再明确确认写入:
37
+
38
+ ```bash
39
+ packwright migrate project/mira-codex \
40
+ --to cursor \
41
+ --target project/mira-cursor \
42
+ --yes
43
+ packwright doctor project/mira-cursor
44
+ packwright score project/mira-cursor
45
+ ```
46
+
47
+ 如需机器可读的迁移收据,请在预览与确认命令中都加入 `--json`。除非另行使用 `--force`,Packwright 不会覆盖已有目标。
48
+
49
+ ## 分数边界
50
+
51
+ 100.0 分表示 pack 通过 Packwright 的公开结构规则,不代表 coding runtime 的实际行为获得 100% 保证。三种 runtime 的真实交互兼容性需要独立验证。
52
+
53
+ 更多内容请参阅 [CLI 契约](docs/CLI.md)、[coding agent 使用提示词](docs/USE_WITH_YOUR_AGENT.md)与 [0.1.0rc1 发布说明](docs/releases/0.1.0rc1.md)。
@@ -0,0 +1,11 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ Security fixes are provided for the latest published Packwright release.
6
+
7
+ ## Reporting a vulnerability
8
+
9
+ Please use GitHub private vulnerability reporting for `pioneerjeff-labs/packwright`. Do not open a public issue with exploit details or private agent files. Include the affected version, reproduction steps using synthetic data, and expected impact.
10
+
11
+ Packwright itself makes no network requests and sends no telemetry. Your files stay under your control; your coding runtime's own data policy still applies.
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Packwright"><path fill="#EFE8DB" d="M8 8 H50 V40 L76 30 V70 L50 60 V92 H8 Z"/><path fill="#B87333" d="M92 8 H50 V40 L76 30 V70 L50 60 V92 H92 Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Packwright"><path fill="#221C15" d="M8 8 H50 V40 L76 30 V70 L50 60 V92 H8 Z"/><path fill="#B87333" d="M92 8 H50 V40 L76 30 V70 L50 60 V92 H92 Z"/></svg>
@@ -0,0 +1,2 @@
1
+ :root{--pw-bg:#F8F4EC;--pw-bg-raised:#FFFDF8;--pw-text:#221C15;--pw-text-muted:#5C5245;--pw-border:#DFD5C2;--pw-accent:#9C4F16;--pw-link:#2E5F86;--pw-copper-mid:#B87333}
2
+ @media(prefers-color-scheme:dark){:root{--pw-bg:#221C15;--pw-bg-raised:#2C251C;--pw-text:#EFE8DB;--pw-text-muted:#B3A78F;--pw-border:#453C2F;--pw-accent:#D9935A;--pw-link:#8AB6D9}}
@@ -0,0 +1,113 @@
1
+ # Agent Archetypes And Memory Contract
2
+
3
+ Packwright treats a character as an agent instance generated from an archetype. The archetype sets the default memory shape and promotion rules; the instance supplies the name, role, voice, work focus, and local state.
4
+
5
+ ```text
6
+ archetype
7
+ -> character instance
8
+ -> platform entry file
9
+ -> memory contract
10
+ -> workspace contract
11
+ -> optional runtime state
12
+ ```
13
+
14
+ ## Core Layers
15
+
16
+ - `AGENTS.md` or `CLAUDE.md`: stable identity, voice, and default behavior.
17
+ - `memory/index.md`: default router and owner map.
18
+ - `memory/profile.md`: explicit stable profile facts that may matter across workstreams.
19
+ - `memory/workstreams.md`: router for long-running domains.
20
+ - `memory/workstreams/<slug>.md`: optional detailed domain file for mature workstreams.
21
+ - `memory/projects/<slug>.md`: project state, decisions, and open loops.
22
+ - `memory/source-map.md`: source, account, file, and artifact lookup pointers.
23
+ - `memory/todos.md`: action queue and commitments.
24
+ - `memory/collaboration.md`: collaboration calibration and repair notes.
25
+ - `workspace/`: domain-first generated drafts, durable artifacts, and archives.
26
+ - `.emotion-engine/codex-state.json`: optional dynamic emotion state, separate from durable memory.
27
+
28
+ ## Archetypes
29
+
30
+ ### Productivity
31
+
32
+ For task execution, project work, planning, and operational follow-through.
33
+
34
+ Default bias:
35
+
36
+ - profile stores stable user, team, or operating preferences.
37
+ - workstreams represent durable areas of responsibility.
38
+ - projects own concrete deliverables and current state.
39
+
40
+ ### Learning Coach
41
+
42
+ For teaching, coaching, deliberate practice, and feedback loops.
43
+
44
+ Default bias:
45
+
46
+ - profile stores learner level, goals, constraints, preferences, and recurring errors.
47
+ - workstreams represent curriculum, practice, feedback, assessment, and habit tracks.
48
+ - projects represent courses, exams, training blocks, or learning deliverables.
49
+
50
+ ### Companion
51
+
52
+ For companion-style continuity where relationship tone matters.
53
+
54
+ Default bias:
55
+
56
+ - profile stores only user-approved stable facts and preferences.
57
+ - transient emotion, inferred psychology, and relationship dynamics do not belong in profile.
58
+ - dynamic state belongs in the Emotion Engine sidecar when enabled.
59
+ - workstreams represent shared routines, creative threads, or boundary-safe support contexts.
60
+
61
+ ### Creator
62
+
63
+ For media, writing, publishing, editorial systems, and audience development.
64
+
65
+ Default bias:
66
+
67
+ - profile stores creator identity, public positioning, style preferences, and platform constraints.
68
+ - workstreams represent content pillars, publishing operations, asset pipelines, and campaign tracks.
69
+ - workspace stores drafts, scripts, title sets, thumbnail briefs, and final publishing artifacts under the creator domain.
70
+
71
+ ### Operations
72
+
73
+ For recurring maintenance, monitoring, community, and administrative workflows.
74
+
75
+ Default bias:
76
+
77
+ - profile stores stakeholders, constraints, service expectations, and escalation preferences.
78
+ - workstreams represent recurring operational domains with checklists and cadence.
79
+ - source-map indexes dashboards, accounts, documents, and monitoring sources.
80
+
81
+ ## Workstream Promotion
82
+
83
+ A workstream should stay inside the parent agent while it only needs domain routing and compact state. Promote it to an independent agent when one or more of these become stable:
84
+
85
+ - different default personality or voice
86
+ - distinct toolchain or source map
87
+ - independent cadence, checks, or maintenance
88
+ - multiple projects with a stable domain router
89
+ - enough context that loading it would pollute unrelated work
90
+ - separate acceptance criteria or ownership boundary
91
+
92
+ Promotion path:
93
+
94
+ ```text
95
+ memory/workstreams.md entry
96
+ -> memory/workstreams/<slug>.md detail file
97
+ -> generated independent agent
98
+ -> parent agent keeps routing and acceptance unless ownership moves
99
+ ```
100
+
101
+ ## Workspace Rules
102
+
103
+ Memory files are not a content warehouse. Workspace layout is domain-first and lifecycle-second so workstream artifacts are easy to migrate with the domain later.
104
+
105
+ - Use `workspace/<domain>/drafts/` for temporary drafts and explorations.
106
+ - Use `workspace/<domain>/artifacts/` for final or reusable deliverables.
107
+ - Use `workspace/<domain>/archive/` for old outputs kept for reference.
108
+ - Use `workspace/shared/` only for cross-domain outputs.
109
+ - Use `workspace/shared/artifacts/handoffs/` for real cross-agent or cross-runtime handoffs.
110
+ - Use `workspace/shared/artifacts/session-briefs/` for same-agent next-session preparation files.
111
+ - Use `workspace/_template/` as the skeleton for a new workstream workspace.
112
+ - Index important outputs in `memory/source-map.md`.
113
+ - Move durable project state into `memory/projects/<slug>.md`, not workspace files.