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.
- packwright-0.1.0rc1/.github/ISSUE_TEMPLATE/bug_report.yml +31 -0
- packwright-0.1.0rc1/.github/ISSUE_TEMPLATE/feature_request.yml +17 -0
- packwright-0.1.0rc1/.github/pull_request_template.md +10 -0
- packwright-0.1.0rc1/.github/workflows/ci.yml +44 -0
- packwright-0.1.0rc1/.github/workflows/release.yml +50 -0
- packwright-0.1.0rc1/CHANGELOG.md +15 -0
- packwright-0.1.0rc1/CONTRIBUTING.md +11 -0
- packwright-0.1.0rc1/LICENSE +21 -0
- packwright-0.1.0rc1/MANIFEST.in +17 -0
- packwright-0.1.0rc1/PKG-INFO +103 -0
- packwright-0.1.0rc1/README.md +69 -0
- packwright-0.1.0rc1/README.zh-CN.md +53 -0
- packwright-0.1.0rc1/SECURITY.md +11 -0
- packwright-0.1.0rc1/assets/mark-dark.svg +1 -0
- packwright-0.1.0rc1/assets/mark-light.svg +1 -0
- packwright-0.1.0rc1/assets/tokens.css +2 -0
- packwright-0.1.0rc1/docs/AGENT_ARCHETYPES.md +113 -0
- packwright-0.1.0rc1/docs/CHARACTER_DRAFTING.md +97 -0
- packwright-0.1.0rc1/docs/CLI.md +85 -0
- packwright-0.1.0rc1/docs/CODEX_CHARACTER_WORKFLOW.md +96 -0
- packwright-0.1.0rc1/docs/USE_WITH_YOUR_AGENT.md +15 -0
- packwright-0.1.0rc1/docs/releases/0.1.0rc1.md +16 -0
- packwright-0.1.0rc1/examples/character_intake.yaml +15 -0
- packwright-0.1.0rc1/pyproject.toml +49 -0
- packwright-0.1.0rc1/scripts/audit_public_tree.py +93 -0
- packwright-0.1.0rc1/scripts/audit_zero_network.py +111 -0
- packwright-0.1.0rc1/scripts/release-gate.sh +94 -0
- packwright-0.1.0rc1/setup.cfg +4 -0
- packwright-0.1.0rc1/site/index.html +34 -0
- packwright-0.1.0rc1/specs/reserved/emotion-engine.yaml +21 -0
- packwright-0.1.0rc1/specs/reserved/runtime-surface.yaml +16 -0
- packwright-0.1.0rc1/src/packwright/__init__.py +3 -0
- packwright-0.1.0rc1/src/packwright/__main__.py +5 -0
- packwright-0.1.0rc1/src/packwright/adapters/__init__.py +10 -0
- packwright-0.1.0rc1/src/packwright/adapters/claude_code.py +390 -0
- packwright-0.1.0rc1/src/packwright/adapters/codex.py +324 -0
- packwright-0.1.0rc1/src/packwright/adapters/cursor.py +389 -0
- packwright-0.1.0rc1/src/packwright/checker/__init__.py +3 -0
- packwright-0.1.0rc1/src/packwright/checker/scoring.py +924 -0
- packwright-0.1.0rc1/src/packwright/cli.py +918 -0
- packwright-0.1.0rc1/src/packwright/core/__init__.py +51 -0
- packwright-0.1.0rc1/src/packwright/core/adapter_layout.py +35 -0
- packwright-0.1.0rc1/src/packwright/core/adopt.py +199 -0
- packwright-0.1.0rc1/src/packwright/core/character_intake.py +1648 -0
- packwright-0.1.0rc1/src/packwright/core/emotion_engine_contract.py +147 -0
- packwright-0.1.0rc1/src/packwright/core/errors.py +13 -0
- packwright-0.1.0rc1/src/packwright/core/handoff.py +531 -0
- packwright-0.1.0rc1/src/packwright/core/install.py +1913 -0
- packwright-0.1.0rc1/src/packwright/core/intake_contract.py +105 -0
- packwright-0.1.0rc1/src/packwright/core/knowledge_contract.py +212 -0
- packwright-0.1.0rc1/src/packwright/core/loader.py +35 -0
- packwright-0.1.0rc1/src/packwright/core/memory_projection.py +126 -0
- packwright-0.1.0rc1/src/packwright/core/naming.py +87 -0
- packwright-0.1.0rc1/src/packwright/core/pack_metadata.py +86 -0
- packwright-0.1.0rc1/src/packwright/core/resolver.py +66 -0
- packwright-0.1.0rc1/src/packwright/core/validation.py +660 -0
- packwright-0.1.0rc1/src/packwright/core/workspace_contract.py +102 -0
- packwright-0.1.0rc1/src/packwright.egg-info/PKG-INFO +103 -0
- packwright-0.1.0rc1/src/packwright.egg-info/SOURCES.txt +100 -0
- packwright-0.1.0rc1/src/packwright.egg-info/dependency_links.txt +1 -0
- packwright-0.1.0rc1/src/packwright.egg-info/entry_points.txt +2 -0
- packwright-0.1.0rc1/src/packwright.egg-info/requires.txt +9 -0
- packwright-0.1.0rc1/src/packwright.egg-info/top_level.txt +1 -0
- packwright-0.1.0rc1/templates/atlas-work/emotion/memory-events.yaml +17 -0
- packwright-0.1.0rc1/templates/atlas-work/emotion/model.yaml +31 -0
- packwright-0.1.0rc1/templates/atlas-work/emotion/state-schema.yaml +22 -0
- packwright-0.1.0rc1/templates/atlas-work/emotion/update-policy.yaml +53 -0
- packwright-0.1.0rc1/templates/atlas-work/emotion/voice-modulation.yaml +15 -0
- packwright-0.1.0rc1/templates/atlas-work/identity/persona.md +39 -0
- packwright-0.1.0rc1/templates/atlas-work/identity/relationship.md +15 -0
- packwright-0.1.0rc1/templates/atlas-work/identity/voice.md +32 -0
- packwright-0.1.0rc1/templates/atlas-work/mechanism/context-loading.yaml +39 -0
- packwright-0.1.0rc1/templates/atlas-work/mechanism/memory-policy.yaml +84 -0
- packwright-0.1.0rc1/templates/atlas-work/mechanism/session-guards.yaml +18 -0
- packwright-0.1.0rc1/templates/atlas-work/mechanism.yaml +542 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/collaboration.md +16 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/emotion-state.json.example +25 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/index.md +33 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/knowledge_map.md +10 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/pinned.md +11 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/profile.md +24 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/projects/_template.md +25 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/recent-activity.md +9 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/relationship-state.md +17 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/session-index.md +11 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/source-map.md +18 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/todos.md +9 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/workstreams/_template.md +35 -0
- packwright-0.1.0rc1/templates/atlas-work/memory/workstreams.md +43 -0
- packwright-0.1.0rc1/templates/atlas-work/operating/boundaries.md +23 -0
- packwright-0.1.0rc1/templates/atlas-work/operating/principles.md +21 -0
- packwright-0.1.0rc1/templates/atlas-work/projection/ownership-contract.yaml +69 -0
- packwright-0.1.0rc1/templates/atlas-work/projection/platform-capabilities.yaml +42 -0
- packwright-0.1.0rc1/templates/atlas-work/skills/save-context/SKILL.md +22 -0
- packwright-0.1.0rc1/templates/atlas-work/workspace/README.md +19 -0
- packwright-0.1.0rc1/templates/atlas-work/workspace/_template/archive/.gitkeep +1 -0
- packwright-0.1.0rc1/templates/atlas-work/workspace/_template/artifacts/.gitkeep +1 -0
- packwright-0.1.0rc1/templates/atlas-work/workspace/_template/drafts/.gitkeep +1 -0
- packwright-0.1.0rc1/templates/atlas-work/workspace/shared/.gitkeep +1 -0
- packwright-0.1.0rc1/templates/character_intake.example.yaml +35 -0
- packwright-0.1.0rc1/tests/test_mvp_chain.py +2258 -0
- 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.
|