agent-pmo 0.1.0__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.
- agent_pmo-0.1.0/.github/workflows/release.yml +44 -0
- agent_pmo-0.1.0/.github/workflows/tests.yml +43 -0
- agent_pmo-0.1.0/.gitignore +221 -0
- agent_pmo-0.1.0/CHANGELOG.md +23 -0
- agent_pmo-0.1.0/LICENSE +21 -0
- agent_pmo-0.1.0/PKG-INFO +73 -0
- agent_pmo-0.1.0/README.md +51 -0
- agent_pmo-0.1.0/WORKFLOW.md +159 -0
- agent_pmo-0.1.0/agent_pmo/__init__.py +7 -0
- agent_pmo-0.1.0/agent_pmo/__main__.py +22 -0
- agent_pmo-0.1.0/agent_pmo/adherence.py +455 -0
- agent_pmo-0.1.0/agent_pmo/adopt.py +693 -0
- agent_pmo-0.1.0/agent_pmo/automation.py +391 -0
- agent_pmo-0.1.0/agent_pmo/backlog.py +251 -0
- agent_pmo-0.1.0/agent_pmo/bootstrap.py +322 -0
- agent_pmo-0.1.0/agent_pmo/changelog.py +340 -0
- agent_pmo-0.1.0/agent_pmo/changes.py +156 -0
- agent_pmo-0.1.0/agent_pmo/checks.py +115 -0
- agent_pmo-0.1.0/agent_pmo/cli.py +1483 -0
- agent_pmo-0.1.0/agent_pmo/coderabbit.py +258 -0
- agent_pmo-0.1.0/agent_pmo/config.py +170 -0
- agent_pmo-0.1.0/agent_pmo/container.py +95 -0
- agent_pmo-0.1.0/agent_pmo/coord.py +277 -0
- agent_pmo-0.1.0/agent_pmo/decisions.py +305 -0
- agent_pmo-0.1.0/agent_pmo/deploy.py +925 -0
- agent_pmo-0.1.0/agent_pmo/discuss.py +562 -0
- agent_pmo-0.1.0/agent_pmo/gitx.py +48 -0
- agent_pmo-0.1.0/agent_pmo/guide.py +184 -0
- agent_pmo-0.1.0/agent_pmo/hosting.py +118 -0
- agent_pmo-0.1.0/agent_pmo/issues.py +133 -0
- agent_pmo-0.1.0/agent_pmo/kit.py +260 -0
- agent_pmo-0.1.0/agent_pmo/landing.py +763 -0
- agent_pmo-0.1.0/agent_pmo/md.py +96 -0
- agent_pmo-0.1.0/agent_pmo/oneoff.py +329 -0
- agent_pmo-0.1.0/agent_pmo/provider.py +562 -0
- agent_pmo-0.1.0/agent_pmo/registry.py +689 -0
- agent_pmo-0.1.0/agent_pmo/release.py +108 -0
- agent_pmo-0.1.0/agent_pmo/reports.py +462 -0
- agent_pmo-0.1.0/agent_pmo/review.py +404 -0
- agent_pmo-0.1.0/agent_pmo/security.py +402 -0
- agent_pmo-0.1.0/agent_pmo/specedit.py +147 -0
- agent_pmo-0.1.0/agent_pmo/style.py +775 -0
- agent_pmo-0.1.0/agent_pmo/templates.py +13 -0
- agent_pmo-0.1.0/agent_pmo/trace.py +237 -0
- agent_pmo-0.1.0/agent_pmo/traceability.py +222 -0
- agent_pmo-0.1.0/agent_pmo/triage.py +336 -0
- agent_pmo-0.1.0/docs/README.md +14 -0
- agent_pmo-0.1.0/docs/automation.md +60 -0
- agent_pmo-0.1.0/docs/commands.md +400 -0
- agent_pmo-0.1.0/docs/concepts.md +86 -0
- agent_pmo-0.1.0/docs/configuration.md +88 -0
- agent_pmo-0.1.0/docs/development.md +97 -0
- agent_pmo-0.1.0/docs/getting-started.md +65 -0
- agent_pmo-0.1.0/profiles/generic.md +10 -0
- agent_pmo-0.1.0/profiles/generic.toml +51 -0
- agent_pmo-0.1.0/profiles/go.md +8 -0
- agent_pmo-0.1.0/profiles/go.toml +57 -0
- agent_pmo-0.1.0/profiles/java.md +8 -0
- agent_pmo-0.1.0/profiles/java.toml +56 -0
- agent_pmo-0.1.0/profiles/python.md +46 -0
- agent_pmo-0.1.0/profiles/python.toml +61 -0
- agent_pmo-0.1.0/profiles/rust.md +8 -0
- agent_pmo-0.1.0/profiles/rust.toml +57 -0
- agent_pmo-0.1.0/profiles/typescript.md +10 -0
- agent_pmo-0.1.0/profiles/typescript.toml +60 -0
- agent_pmo-0.1.0/pyproject.toml +51 -0
- agent_pmo-0.1.0/templates/agents/AGENTS.md +9 -0
- agent_pmo-0.1.0/templates/agents/CLAUDE.md +9 -0
- agent_pmo-0.1.0/templates/agents/GEMINI.md +9 -0
- agent_pmo-0.1.0/templates/agents/copilot-instructions.md +5 -0
- agent_pmo-0.1.0/templates/agents/cursor-workflow.mdc +8 -0
- agent_pmo-0.1.0/templates/architecture.md +23 -0
- agent_pmo-0.1.0/templates/architecture_changelog.md +8 -0
- agent_pmo-0.1.0/templates/assumptions.md +10 -0
- agent_pmo-0.1.0/templates/backlog_index.md +6 -0
- agent_pmo-0.1.0/templates/change_request.md +46 -0
- agent_pmo-0.1.0/templates/changelog.md +8 -0
- agent_pmo-0.1.0/templates/changes_index.md +7 -0
- agent_pmo-0.1.0/templates/decisions_index.md +9 -0
- agent_pmo-0.1.0/templates/deploy_changelog.md +8 -0
- agent_pmo-0.1.0/templates/deploy_deployments.md +6 -0
- agent_pmo-0.1.0/templates/docs_readme.md +12 -0
- agent_pmo-0.1.0/templates/guide_agent.md +54 -0
- agent_pmo-0.1.0/templates/guide_changelog.md +10 -0
- agent_pmo-0.1.0/templates/guide_coding_style.md +7 -0
- agent_pmo-0.1.0/templates/guide_developer.md +114 -0
- agent_pmo-0.1.0/templates/guide_project_manager.md +104 -0
- agent_pmo-0.1.0/templates/module_readme.md +19 -0
- agent_pmo-0.1.0/templates/security_index.md +6 -0
- agent_pmo-0.1.0/templates/spec.md +77 -0
- agent_pmo-0.1.0/templates/spec_index.md +28 -0
- agent_pmo-0.1.0/tests/test_adopt.py +152 -0
- agent_pmo-0.1.0/tests/test_coderabbit.py +131 -0
- agent_pmo-0.1.0/tests/test_deploy.py +142 -0
- agent_pmo-0.1.0/tests/test_discuss.py +183 -0
- agent_pmo-0.1.0/tests/test_kit.py +619 -0
- agent_pmo-0.1.0/tests/test_oneoff.py +114 -0
- agent_pmo-0.1.0/tests/test_parallel.py +731 -0
- agent_pmo-0.1.0/tests/test_triage.py +84 -0
- agent_pmo-0.1.0/tests/test_version.py +121 -0
- agent_pmo-0.1.0/tests/test_workflow.py +93 -0
- agent_pmo-0.1.0/workflows/adopt.md +15 -0
- agent_pmo-0.1.0/workflows/change-request.md +17 -0
- agent_pmo-0.1.0/workflows/deploy.md +28 -0
- agent_pmo-0.1.0/workflows/discuss.md +21 -0
- agent_pmo-0.1.0/workflows/fix.md +11 -0
- agent_pmo-0.1.0/workflows/implement.md +21 -0
- agent_pmo-0.1.0/workflows/merge.md +9 -0
- agent_pmo-0.1.0/workflows/oneoff.md +16 -0
- agent_pmo-0.1.0/workflows/parallel.md +12 -0
- agent_pmo-0.1.0/workflows/planning.md +27 -0
- agent_pmo-0.1.0/workflows/release.md +12 -0
- agent_pmo-0.1.0/workflows/revert.md +12 -0
- agent_pmo-0.1.0/workflows/review.md +31 -0
- agent_pmo-0.1.0/workflows/scheduled.md +11 -0
- agent_pmo-0.1.0/workflows/security.md +11 -0
- agent_pmo-0.1.0/workflows/setup.md +70 -0
- agent_pmo-0.1.0/workflows/test.md +15 -0
- agent_pmo-0.1.0/workflows/triage.md +18 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Publishes agent-pmo to PyPI when a tag vX.Y.Z is pushed. PyPI trusted publishing: add this repository and the
|
|
2
|
+
# workflow `release.yml` (environment `pypi`) as a trusted publisher of the agent-pmo project; no token is stored.
|
|
3
|
+
name: release
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
tags: ["v*"]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
- uses: actions/setup-python@v5
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.12"
|
|
20
|
+
- name: the tag, the package version and the changelog agree
|
|
21
|
+
run: |
|
|
22
|
+
version=$(python -c "import agent_pmo; print(agent_pmo.__version__)")
|
|
23
|
+
test "${GITHUB_REF_NAME}" = "v${version}" || { echo "tag ${GITHUB_REF_NAME} is not v${version}"; exit 1; }
|
|
24
|
+
grep -q "^## ${version} — [0-9]" CHANGELOG.md || { echo "CHANGELOG.md has no dated section for ${version}"; exit 1; }
|
|
25
|
+
- run: git config --global user.name ci && git config --global user.email ci@localhost
|
|
26
|
+
- run: python -m unittest discover -s tests
|
|
27
|
+
- run: python -m pip install build && python -m build
|
|
28
|
+
- uses: actions/upload-artifact@v4
|
|
29
|
+
with:
|
|
30
|
+
name: dist
|
|
31
|
+
path: dist/
|
|
32
|
+
|
|
33
|
+
publish:
|
|
34
|
+
needs: build
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
environment: pypi
|
|
37
|
+
permissions:
|
|
38
|
+
id-token: write
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/download-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: dist
|
|
43
|
+
path: dist/
|
|
44
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
tests:
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-latest, macos-latest]
|
|
17
|
+
python: ["3.11", "3.13"]
|
|
18
|
+
include:
|
|
19
|
+
- os: windows-latest # not verified yet: kept visible without failing the build
|
|
20
|
+
python: "3.12"
|
|
21
|
+
experimental: true
|
|
22
|
+
runs-on: ${{ matrix.os }}
|
|
23
|
+
continue-on-error: ${{ matrix.experimental == true }}
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
- uses: actions/setup-python@v5
|
|
27
|
+
with:
|
|
28
|
+
python-version: ${{ matrix.python }}
|
|
29
|
+
- run: git config --global user.name ci && git config --global user.email ci@localhost
|
|
30
|
+
- name: unit and end-to-end tests
|
|
31
|
+
run: python -m unittest discover -s tests
|
|
32
|
+
- name: the built wheel installs and runs
|
|
33
|
+
shell: bash
|
|
34
|
+
run: |
|
|
35
|
+
python -m pip install build
|
|
36
|
+
python -m build --wheel --outdir dist
|
|
37
|
+
python -m venv /tmp/venv-agent-pmo
|
|
38
|
+
/tmp/venv-agent-pmo/bin/pip install dist/*.whl || /tmp/venv-agent-pmo/Scripts/pip install dist/*.whl
|
|
39
|
+
export PATH="/tmp/venv-agent-pmo/bin:/tmp/venv-agent-pmo/Scripts:$PATH"
|
|
40
|
+
mkdir /tmp/project && cd /tmp/project && git init -q
|
|
41
|
+
agent-pmo --version
|
|
42
|
+
agent-pmo install --agents claude,agents
|
|
43
|
+
test -f .pm/WORKFLOW.md && test -f .pm/workflows/setup.md && test -f CLAUDE.md
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[codz]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
share/python-wheels/
|
|
24
|
+
*.egg-info/
|
|
25
|
+
.installed.cfg
|
|
26
|
+
*.egg
|
|
27
|
+
MANIFEST
|
|
28
|
+
|
|
29
|
+
# PyInstaller
|
|
30
|
+
# Usually these files are written by a python script from a template
|
|
31
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
32
|
+
*.manifest
|
|
33
|
+
*.spec
|
|
34
|
+
|
|
35
|
+
# Installer logs
|
|
36
|
+
pip-log.txt
|
|
37
|
+
pip-delete-this-directory.txt
|
|
38
|
+
|
|
39
|
+
# Unit test / coverage reports
|
|
40
|
+
htmlcov/
|
|
41
|
+
.tox/
|
|
42
|
+
.nox/
|
|
43
|
+
.coverage
|
|
44
|
+
.coverage.*
|
|
45
|
+
.cache
|
|
46
|
+
nosetests.xml
|
|
47
|
+
coverage.xml
|
|
48
|
+
*.cover
|
|
49
|
+
*.py.cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
cover/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
.pybuilder/
|
|
76
|
+
target/
|
|
77
|
+
|
|
78
|
+
# Jupyter Notebook
|
|
79
|
+
.ipynb_checkpoints
|
|
80
|
+
|
|
81
|
+
# IPython
|
|
82
|
+
profile_default/
|
|
83
|
+
ipython_config.py
|
|
84
|
+
|
|
85
|
+
# pyenv
|
|
86
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
87
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
88
|
+
# .python-version
|
|
89
|
+
|
|
90
|
+
# pipenv
|
|
91
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
92
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
93
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
94
|
+
# install all needed dependencies.
|
|
95
|
+
# Pipfile.lock
|
|
96
|
+
|
|
97
|
+
# UV
|
|
98
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
99
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
100
|
+
# commonly ignored for libraries.
|
|
101
|
+
# uv.lock
|
|
102
|
+
|
|
103
|
+
# poetry
|
|
104
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
105
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
106
|
+
# commonly ignored for libraries.
|
|
107
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
108
|
+
# poetry.lock
|
|
109
|
+
# poetry.toml
|
|
110
|
+
|
|
111
|
+
# pdm
|
|
112
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
113
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
114
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
115
|
+
# pdm.lock
|
|
116
|
+
# pdm.toml
|
|
117
|
+
.pdm-python
|
|
118
|
+
.pdm-build/
|
|
119
|
+
|
|
120
|
+
# pixi
|
|
121
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
122
|
+
# pixi.lock
|
|
123
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
124
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
125
|
+
.pixi
|
|
126
|
+
|
|
127
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
128
|
+
__pypackages__/
|
|
129
|
+
|
|
130
|
+
# Celery stuff
|
|
131
|
+
celerybeat-schedule
|
|
132
|
+
celerybeat.pid
|
|
133
|
+
|
|
134
|
+
# Redis
|
|
135
|
+
*.rdb
|
|
136
|
+
*.aof
|
|
137
|
+
*.pid
|
|
138
|
+
|
|
139
|
+
# RabbitMQ
|
|
140
|
+
mnesia/
|
|
141
|
+
rabbitmq/
|
|
142
|
+
rabbitmq-data/
|
|
143
|
+
|
|
144
|
+
# ActiveMQ
|
|
145
|
+
activemq-data/
|
|
146
|
+
|
|
147
|
+
# SageMath parsed files
|
|
148
|
+
*.sage.py
|
|
149
|
+
|
|
150
|
+
# Environments
|
|
151
|
+
.env
|
|
152
|
+
.envrc
|
|
153
|
+
.venv
|
|
154
|
+
env/
|
|
155
|
+
venv/
|
|
156
|
+
ENV/
|
|
157
|
+
env.bak/
|
|
158
|
+
venv.bak/
|
|
159
|
+
|
|
160
|
+
# Spyder project settings
|
|
161
|
+
.spyderproject
|
|
162
|
+
.spyproject
|
|
163
|
+
|
|
164
|
+
# Rope project settings
|
|
165
|
+
.ropeproject
|
|
166
|
+
|
|
167
|
+
# mkdocs documentation
|
|
168
|
+
/site
|
|
169
|
+
|
|
170
|
+
# mypy
|
|
171
|
+
.mypy_cache/
|
|
172
|
+
.dmypy.json
|
|
173
|
+
dmypy.json
|
|
174
|
+
|
|
175
|
+
# Pyre type checker
|
|
176
|
+
.pyre/
|
|
177
|
+
|
|
178
|
+
# pytype static type analyzer
|
|
179
|
+
.pytype/
|
|
180
|
+
|
|
181
|
+
# Cython debug symbols
|
|
182
|
+
cython_debug/
|
|
183
|
+
|
|
184
|
+
# PyCharm
|
|
185
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
186
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
187
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
188
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
189
|
+
# .idea/
|
|
190
|
+
|
|
191
|
+
# Abstra
|
|
192
|
+
# Abstra is an AI-powered process automation framework.
|
|
193
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
194
|
+
# Learn more at https://abstra.io/docs
|
|
195
|
+
.abstra/
|
|
196
|
+
|
|
197
|
+
# Visual Studio Code
|
|
198
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
199
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
200
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
201
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
202
|
+
# .vscode/
|
|
203
|
+
# Temporary file for partial code execution
|
|
204
|
+
tempCodeRunnerFile.py
|
|
205
|
+
|
|
206
|
+
# Ruff stuff:
|
|
207
|
+
.ruff_cache/
|
|
208
|
+
|
|
209
|
+
# PyPI configuration file
|
|
210
|
+
.pypirc
|
|
211
|
+
|
|
212
|
+
# Marimo
|
|
213
|
+
marimo/_static/
|
|
214
|
+
marimo/_lsp/
|
|
215
|
+
__marimo__/
|
|
216
|
+
|
|
217
|
+
# Streamlit
|
|
218
|
+
.streamlit/secrets.toml
|
|
219
|
+
|
|
220
|
+
# macOS Finder metadata
|
|
221
|
+
.DS_Store
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
The release notes of agent-pmo. `agent-pmo upgrade` prints the notes of every version a project moves past, so write
|
|
4
|
+
each entry for the people upgrading: what changes for them, and anything they must do.
|
|
5
|
+
|
|
6
|
+
Versions follow [semantic versioning](https://semver.org): a major version for changes that need the user or the agents
|
|
7
|
+
to work differently, a minor version for new features, a patch version for fixes. Every change that needs a project's
|
|
8
|
+
files moved or rewritten comes with a migration in `agent_pmo/kit.py`, which `upgrade` runs.
|
|
9
|
+
|
|
10
|
+
## 0.1.0 — 2026-10-26
|
|
11
|
+
|
|
12
|
+
The kit becomes the installable command `agent-pmo` (PyPI package `agent-pmo`).
|
|
13
|
+
|
|
14
|
+
- **Install once per machine** with `pipx install agent-pmo` (or `uv tool install agent-pmo`), instead of copying the
|
|
15
|
+
kit into each repository. `python3 .pm/pm.py <command>` is now `agent-pmo <command>`.
|
|
16
|
+
- **`.pm/` keeps only the agents' instructions** (WORKFLOW.md, workflows, best-practices files, docs). They are
|
|
17
|
+
generated: `agent-pmo install` writes them, `agent-pmo upgrade` refreshes them, and `agent-pmo check` reports edits.
|
|
18
|
+
- **Each project pins its version** in `pm.toml` (`[kit] version`). Hooks, CI and the dev container install that
|
|
19
|
+
version. An older installed version refuses to run; a newer one warns until the project is upgraded.
|
|
20
|
+
- **New commands:** `install`, `upgrade [--dry-run]`, `version [--check]`, and `--version`.
|
|
21
|
+
- **Upgrading a project that copied the kit:** install agent-pmo, then run `agent-pmo upgrade` in the project. It
|
|
22
|
+
removes the copied code from `.pm/` (`pm.py`, `pmlib/`, `tests/`, `templates/`, the profile settings), drops the
|
|
23
|
+
secret-scan exceptions for it, rewrites the instructions, entry files, hooks and generated CI files, and pins 0.1.0.
|
agent_pmo-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Vikas Bhandary
|
|
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.
|
agent_pmo-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: agent-pmo
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Project management for AI coding agents: specs, decisions, tests, reviews and releases with traceable evidence.
|
|
5
|
+
Project-URL: Homepage, https://github.com/vksbhandary/agent-pmo
|
|
6
|
+
Project-URL: Changelog, https://github.com/vksbhandary/agent-pmo/blob/master/CHANGELOG.md
|
|
7
|
+
Author: Vikas Bhandary
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: agents,ai,claude,codex,project-management,specs,workflow
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
# agent-pmo — project management for AI coding agents
|
|
24
|
+
|
|
25
|
+
agent-pmo is a small command-line tool that lets coding agents (Claude Code, Codex, Gemini CLI, Copilot, Cursor, …) build a project the way a careful team would:
|
|
26
|
+
|
|
27
|
+
- **Plan first, never guess.** Every open question is asked, and every answer is kept word for word as a decision.
|
|
28
|
+
- **Work from specs.** Each component has a spec with requirements and a plan of small, testable increments.
|
|
29
|
+
- **Prove each step.** Code is tested against its requirements, scanned for security issues, and reviewed by a *different* model.
|
|
30
|
+
- **Keep you in charge.** Agents work in parallel and never wait. You review every unit in its own pull request, and `stable` only ever holds code that passed everything.
|
|
31
|
+
- **Trace everything.** Every commit, report, issue and decision links back to the change and the requirement it belongs to.
|
|
32
|
+
|
|
33
|
+
It works with any language, on Linux, macOS and Windows, with GitHub, GitLab, Bitbucket or no hosting at all. It needs Python 3.11+ and git, and has no dependencies of its own.
|
|
34
|
+
|
|
35
|
+
## Set up
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pipx install agent-pmo # or: uv tool install agent-pmo
|
|
39
|
+
agent-pmo install --agents claude,agents # in your repository: the agents' instructions and entry files
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`install` writes the agents' instructions into `.pm/` and an entry file for each coding agent (`CLAUDE.md`, `AGENTS.md`; also `gemini`, `copilot`, `cursor`). Commit them with your project.
|
|
43
|
+
|
|
44
|
+
Then open your coding agent in the repository and say one of:
|
|
45
|
+
|
|
46
|
+
| | Say |
|
|
47
|
+
|---|---|
|
|
48
|
+
| New project | **"set up the project"** |
|
|
49
|
+
| Existing code | **"analyse old code"** |
|
|
50
|
+
| Idea in an issue | **"plan the project from issue #12"** |
|
|
51
|
+
| Quick experiment | **"build `<idea>` quickly"** |
|
|
52
|
+
|
|
53
|
+
The agent asks you everything it needs (what you're building, how you work, the coding style, your git provider) and sets up the rest. If you work with a git provider, give the agents their own token: `AGENT_TOKEN=<token>` in `.env`.
|
|
54
|
+
|
|
55
|
+
## Day to day
|
|
56
|
+
|
|
57
|
+
Talk to your agent: **"status"**, **"continue"**, **"test the next spec"**, **"review the next spec"**, **"fix `<bug>`"**, **"fetch repo issues"**, **"plan the deployment"**, **"revert `<change>`"**. You review and merge the review pull requests; CI does the rest.
|
|
58
|
+
|
|
59
|
+
## Learn more
|
|
60
|
+
|
|
61
|
+
| | |
|
|
62
|
+
|---|---|
|
|
63
|
+
| [Getting started](docs/getting-started.md) | setup paths and the daily loop, in more detail |
|
|
64
|
+
| [Commands](docs/commands.md) | every `agent-pmo` command with examples |
|
|
65
|
+
| [Configuration](docs/configuration.md) | `pm.toml`, table by table |
|
|
66
|
+
| [Concepts](docs/concepts.md) | units, statuses, the branch model, reviews, decisions, traceability |
|
|
67
|
+
| [Automation](docs/automation.md) | hooks, CI, scheduled checks, providers and tokens |
|
|
68
|
+
| [Development](docs/development.md) | the code map, tests, adding a language |
|
|
69
|
+
| [WORKFLOW.md](WORKFLOW.md) | the process the agents follow (with one file per workflow in [workflows/](workflows/)) |
|
|
70
|
+
|
|
71
|
+
## Updating
|
|
72
|
+
|
|
73
|
+
Each project pins its version (`[kit] version` in `pm.toml`), so hooks, CI and the whole team run the same one. After `pipx upgrade agent-pmo`, run **`agent-pmo upgrade`** in the project: it migrates it, refreshes `.pm/`, the entry files, hooks and CI, and pins the new version. `agent-pmo version --check` shows what's installed, pinned and latest; [CHANGELOG.md](CHANGELOG.md) lists every release.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# agent-pmo — project management for AI coding agents
|
|
2
|
+
|
|
3
|
+
agent-pmo is a small command-line tool that lets coding agents (Claude Code, Codex, Gemini CLI, Copilot, Cursor, …) build a project the way a careful team would:
|
|
4
|
+
|
|
5
|
+
- **Plan first, never guess.** Every open question is asked, and every answer is kept word for word as a decision.
|
|
6
|
+
- **Work from specs.** Each component has a spec with requirements and a plan of small, testable increments.
|
|
7
|
+
- **Prove each step.** Code is tested against its requirements, scanned for security issues, and reviewed by a *different* model.
|
|
8
|
+
- **Keep you in charge.** Agents work in parallel and never wait. You review every unit in its own pull request, and `stable` only ever holds code that passed everything.
|
|
9
|
+
- **Trace everything.** Every commit, report, issue and decision links back to the change and the requirement it belongs to.
|
|
10
|
+
|
|
11
|
+
It works with any language, on Linux, macOS and Windows, with GitHub, GitLab, Bitbucket or no hosting at all. It needs Python 3.11+ and git, and has no dependencies of its own.
|
|
12
|
+
|
|
13
|
+
## Set up
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pipx install agent-pmo # or: uv tool install agent-pmo
|
|
17
|
+
agent-pmo install --agents claude,agents # in your repository: the agents' instructions and entry files
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
`install` writes the agents' instructions into `.pm/` and an entry file for each coding agent (`CLAUDE.md`, `AGENTS.md`; also `gemini`, `copilot`, `cursor`). Commit them with your project.
|
|
21
|
+
|
|
22
|
+
Then open your coding agent in the repository and say one of:
|
|
23
|
+
|
|
24
|
+
| | Say |
|
|
25
|
+
|---|---|
|
|
26
|
+
| New project | **"set up the project"** |
|
|
27
|
+
| Existing code | **"analyse old code"** |
|
|
28
|
+
| Idea in an issue | **"plan the project from issue #12"** |
|
|
29
|
+
| Quick experiment | **"build `<idea>` quickly"** |
|
|
30
|
+
|
|
31
|
+
The agent asks you everything it needs (what you're building, how you work, the coding style, your git provider) and sets up the rest. If you work with a git provider, give the agents their own token: `AGENT_TOKEN=<token>` in `.env`.
|
|
32
|
+
|
|
33
|
+
## Day to day
|
|
34
|
+
|
|
35
|
+
Talk to your agent: **"status"**, **"continue"**, **"test the next spec"**, **"review the next spec"**, **"fix `<bug>`"**, **"fetch repo issues"**, **"plan the deployment"**, **"revert `<change>`"**. You review and merge the review pull requests; CI does the rest.
|
|
36
|
+
|
|
37
|
+
## Learn more
|
|
38
|
+
|
|
39
|
+
| | |
|
|
40
|
+
|---|---|
|
|
41
|
+
| [Getting started](docs/getting-started.md) | setup paths and the daily loop, in more detail |
|
|
42
|
+
| [Commands](docs/commands.md) | every `agent-pmo` command with examples |
|
|
43
|
+
| [Configuration](docs/configuration.md) | `pm.toml`, table by table |
|
|
44
|
+
| [Concepts](docs/concepts.md) | units, statuses, the branch model, reviews, decisions, traceability |
|
|
45
|
+
| [Automation](docs/automation.md) | hooks, CI, scheduled checks, providers and tokens |
|
|
46
|
+
| [Development](docs/development.md) | the code map, tests, adding a language |
|
|
47
|
+
| [WORKFLOW.md](WORKFLOW.md) | the process the agents follow (with one file per workflow in [workflows/](workflows/)) |
|
|
48
|
+
|
|
49
|
+
## Updating
|
|
50
|
+
|
|
51
|
+
Each project pins its version (`[kit] version` in `pm.toml`), so hooks, CI and the whole team run the same one. After `pipx upgrade agent-pmo`, run **`agent-pmo upgrade`** in the project: it migrates it, refreshes `.pm/`, the entry files, hooks and CI, and pins the new version. `agent-pmo version --check` shows what's installed, pinned and latest; [CHANGELOG.md](CHANGELOG.md) lists every release.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Workflow: how an AI coding agent works on this project
|
|
2
|
+
|
|
3
|
+
This is the provider-neutral workflow of agent-pmo. `agent-pmo` is the command-line tool (Python ≥ 3.11); `.pm/` holds these instructions, generated by it. Any coding agent (Claude Code, Codex, Gemini CLI, Copilot, Cursor, …) follows it. Thin entry files such as `CLAUDE.md`, `AGENTS.md`, `GEMINI.md`, `.github/copilot-instructions.md` and `.cursor/rules/workflow.mdc` only point here; `agent-pmo init --agents …` generates them. Everything written about the project lives under `docs/`. Nothing in this file is project-specific: project settings are in `pm.toml`, and language rules are in the configured best-practices file (`.pm/profiles/<language>.md`).
|
|
4
|
+
|
|
5
|
+
Run the kit with `agent-pmo <command>` (`--help` lists everything). Never edit generated content by hand: the index order, phase and status columns, the build-order lines, the module README header and contract blocks, and the `<!-- pm:begin … -->` blocks. Use `agent-pmo sync`.
|
|
6
|
+
|
|
7
|
+
**The version:** the project uses the agent-pmo version in `pm.toml` (`[kit] version`). If `agent-pmo` is not installed, or a command or `agent-pmo check` reports a different version, stop and give the user the install command it prints (`pipx install agent-pmo==<version>`). Never edit `.pm/`: it is generated. Move the project to a newer version only when the user asks (`agent-pmo upgrade`).
|
|
8
|
+
|
|
9
|
+
## 0. Is the project set up?
|
|
10
|
+
|
|
11
|
+
If `pm.toml` does not exist, run **Project setup** ([workflows/setup.md](workflows/setup.md)) before anything else, unless the user asks for a one-off build ([workflows/oneoff.md](workflows/oneoff.md)), which needs no setup. If the repository already has code and commits, or the user asks to "analyse old code", adopt it first ([workflows/adopt.md](workflows/adopt.md)); with too little code, `agent-pmo adopt detect` sends you back to [workflows/setup.md](workflows/setup.md). After cloning an existing project, run `agent-pmo hooks install` so the git hooks are active.
|
|
12
|
+
|
|
13
|
+
## 1. Where things are
|
|
14
|
+
|
|
15
|
+
| What | Where |
|
|
16
|
+
|---|---|
|
|
17
|
+
| Project settings: language, ID prefix, review approval, risk, git strategy and branches, provider, coordination, hooks, schedule, container, gates, security tools | `pm.toml` |
|
|
18
|
+
| Language best practices (follow them in all code and tests) | `.pm/profiles/<language>.md` |
|
|
19
|
+
| Project guides: **agent guide (read it before your first unit)**, developer guide, project manager guide, and their changelog | `docs/guide/agent.md`, `docs/guide/developer.md`, `docs/guide/project-manager.md`, `docs/guide/changelog.md` |
|
|
20
|
+
| **Coding style** for every file type (follow it in all code, tests, docs and config) | `docs/guide/coding-style.md`; enforced by `.editorconfig` and the linter/formatter configs generated from it |
|
|
21
|
+
| Kit documentation: every command, the settings, the concepts | `.pm/docs/commands.md`, `.pm/docs/configuration.md`, `.pm/docs/concepts.md` |
|
|
22
|
+
| Architecture, and its changelog | `docs/architecture/README.md`, `docs/architecture/changelog.md` |
|
|
23
|
+
| Build order, dependency graph, module statuses | `docs/specifications/README.md` |
|
|
24
|
+
| A component's spec (requirements, interface, implementation plan) | `docs/specifications/<component>/README.md` |
|
|
25
|
+
| Its history, test plans and reports, review requests and code reviews | `docs/specifications/<component>/changelog.md`, `test/`, `review/` |
|
|
26
|
+
| Change requests (new or updated requirements) | `docs/changes/` |
|
|
27
|
+
| Decisions (question, the user's verbatim answer, why) and the assumption register | `docs/decisions/` |
|
|
28
|
+
| Backlog: bugs, security and review findings, debt, accepted risks | `docs/backlog/` |
|
|
29
|
+
| Security reports: per module, and project-wide | `docs/specifications/<component>/security/`, `docs/security/` |
|
|
30
|
+
| Who is working on what (parallel agents), unique numbers | `agent-pmo claim list` (shared branch `pm/coord`) |
|
|
31
|
+
| Developer summary of a module | `README.md` in the module's folder |
|
|
32
|
+
|
|
33
|
+
If code and spec disagree, the spec wins, unless you deliberately change the spec in the same commit and give the reason in its changelog row. The agent guide adds project-specific rules for agents; where it conflicts with this workflow, this workflow wins and you tell the user.
|
|
34
|
+
|
|
35
|
+
## 2. What the user says → what you do
|
|
36
|
+
|
|
37
|
+
| User says | Workflow |
|
|
38
|
+
|---|---|
|
|
39
|
+
| "set up the project" / "start a new project" / "plan a project" | [workflows/setup.md](workflows/setup.md) Project setup: first the project discussion, then the settings |
|
|
40
|
+
| "plan the project from issue #N" / "start from scratch with issue #N" (no `pm.toml` yet) | [workflows/discuss.md](workflows/discuss.md) Planning through an issue, kind `project` |
|
|
41
|
+
| "take feature requests from the issues" / "plan the feature in issue #N" | [workflows/discuss.md](workflows/discuss.md) Planning through an issue, kind `feature` (`agent-pmo discuss candidates` lists the open feature requests) |
|
|
42
|
+
| "analyse old code" / "analyse this repo" / "adopt the existing code" / "take over this codebase" (no `pm.toml` yet) | [workflows/adopt.md](workflows/adopt.md) Adopt an existing repository |
|
|
43
|
+
| "build `<idea>` quickly" / "vibe code `<idea>`" / "one-off: `<idea>`" / "just build it, don't ask me much" | [workflows/oneoff.md](workflows/oneoff.md) One-off build: plan, implement and test on your own, then write REPORT.md. No setup, no git |
|
|
44
|
+
| "implement the next spec" / "next" / "continue" | `agent-pmo next implement --claim`: a planned increment → [workflows/implement.md](workflows/implement.md); a backlog item (`FIX:`) → [workflows/fix.md](workflows/fix.md) |
|
|
45
|
+
| "work in parallel" / several agents at once | [workflows/parallel.md](workflows/parallel.md): each agent claims its own module |
|
|
46
|
+
| "set up the git provider" / "connect GitHub/GitLab/Bitbucket" (any phase) | `agent-pmo provider setup --kind …` after asking the user ([workflows/setup.md](workflows/setup.md) step 4); skippable |
|
|
47
|
+
| "check the tokens" | `agent-pmo provider check` |
|
|
48
|
+
| "use CodeRabbit" / "set up CodeRabbit" / "stop CodeRabbit" (any phase) | [workflows/setup.md](workflows/setup.md) (the CodeRabbit step): ask, then `agent-pmo coderabbit setup --mode …` |
|
|
49
|
+
| Implementation is blocked by "coding style not agreed" | [workflows/setup.md](workflows/setup.md) step 6: first ask whether to use the languages' default styles, then the questions they want to decide |
|
|
50
|
+
| "change the coding style" (all of it, a file type, or a rule) — at any time | `agent-pmo style change --types … / --ids … --reason "<user's words>"` opens the change (logged; nothing is blocked), then ask the questions now or later |
|
|
51
|
+
| "answer the coding style questions" / "use the default style for X" | `agent-pmo style questions --pending`, ask them (some or all), then `agent-pmo style apply --answers …` (and/or `--defaults --question … --answer …`) |
|
|
52
|
+
| A commit is refused for "no agreed coding style" or "differs from the agreed coding style" | A new kind of file: open a style change for its type (default or questions). A hand-edited style file: restore it, or go through a style change |
|
|
53
|
+
| "test the next spec" | [workflows/test.md](workflows/test.md) Test (unit from `agent-pmo next test`) |
|
|
54
|
+
| "review the next spec" | [workflows/review.md](workflows/review.md) Review (unit from `agent-pmo next review`) |
|
|
55
|
+
| "approve the review" / "looks good" (on a review) | [workflows/review.md](workflows/review.md) step 9 |
|
|
56
|
+
| A new feature, or a change to requirements or behaviour | [workflows/change-request.md](workflows/change-request.md) Change request: specs first |
|
|
57
|
+
| The user answers a planning question, or changes an earlier decision | [workflows/planning.md](workflows/planning.md): record a decision (superseding the old one if needed) |
|
|
58
|
+
| "what did we decide about X?" / "why is X like this?" | `agent-pmo decision list`, read the record(s), quote the user's answer and the reasoning |
|
|
59
|
+
| A bug report, or "fix X" | `agent-pmo backlog new …` with a priority, then [workflows/fix.md](workflows/fix.md) |
|
|
60
|
+
| "fetch repo issues" / "fetch the bugs" / "triage the issues" / "what's open on GitHub/GitLab/Bitbucket?" | [workflows/triage.md](workflows/triage.md) Issue triage |
|
|
61
|
+
| "implement / test / review `<module>`" | The same workflow for that module's next increment. Refuse and show the blockers if its prerequisites aren't met. |
|
|
62
|
+
| "security report" | [workflows/security.md](workflows/security.md) |
|
|
63
|
+
| A scheduled-check summary arrives, or "run the scheduled checks" | [workflows/scheduled.md](workflows/scheduled.md) |
|
|
64
|
+
| "land" / "land `<module>` increment `<k>`" / "open the PR" / a unit is AI-reviewed | `agent-pmo land …` ([workflows/review.md](workflows/review.md) step 10) |
|
|
65
|
+
| "update my branch (from dev)" | `agent-pmo update-branch`, then report what it merged and what is left to resolve |
|
|
66
|
+
| "make `<issue>` P1" / a priority change | `agent-pmo backlog priority BL-… P1` (or `unit priority` for an increment) |
|
|
67
|
+
| "work without AI" / the user did work by hand | Read the guides' *Working without AI* sections; verify the hand-made documents (run the gates, regenerate incomplete reports), and point out gaps to the user instead of rewriting history |
|
|
68
|
+
| "plan the deployment" / "how do we deploy?" / "change the deploy plan" | [workflows/deploy.md](workflows/deploy.md) Deploy plan |
|
|
69
|
+
| "prepare a release" / "deploy `<version>` to `<env>`" / "roll back `<env>` to `<version>`" / "record the deployment" | [workflows/deploy.md](workflows/deploy.md) steps 5–8 |
|
|
70
|
+
| "release" / "promote to staging/production" | [workflows/release.md](workflows/release.md) |
|
|
71
|
+
| A merge conflict, or "merge X" | [workflows/merge.md](workflows/merge.md) |
|
|
72
|
+
| "revert X" / "roll back" / "go back to the last stable version" | [workflows/revert.md](workflows/revert.md) |
|
|
73
|
+
| "trace X" (a change, module, requirement, CR or backlog item) | `agent-pmo trace X`, then summarize |
|
|
74
|
+
| "status" / "what's next?" | `agent-pmo status`, `agent-pmo backlog list --open`, then `agent-pmo next implement\|test\|review`, and summarize |
|
|
75
|
+
| "check docs" | `agent-pmo check`, then fix what it reports |
|
|
76
|
+
| "update agent-pmo" / "upgrade the kit" / "use the latest version" | `agent-pmo version --check`; the user installs the newer release (`pipx upgrade agent-pmo`), then `agent-pmo upgrade --dry-run`, show what changes, `agent-pmo upgrade`, `agent-pmo check`, and commit it as one change with its release notes in the message |
|
|
77
|
+
| "add a rule/convention" / "update the guide(s)" | Edit the right guide in `docs/guide/` (developer, project manager or agent) and add a row to `docs/guide/changelog.md` in the same commit |
|
|
78
|
+
|
|
79
|
+
Don't ask the user which unit to work on: `agent-pmo next` decides. If `next implement` is blocked because something is untested, say so and offer the test workflow. With other agents running, always pass `--claim` (and `--agent <id>` or set `PM_AGENT`), so two agents never take the same module.
|
|
80
|
+
|
|
81
|
+
## 3. Units, priorities and statuses
|
|
82
|
+
|
|
83
|
+
- **A unit** is one increment of one module, or one backlog item. Increments live in each spec's *Implementation plan*, each with `**Status:**`, `**Priority:**` and `**Also requires**`.
|
|
84
|
+
- **Priorities:** `P0` (critical), `P1` (high), `P2` (normal, the default) and `P3` (low). They apply to increments (`agent-pmo unit priority <module> <k> P1`), change requests (`--priority`) and backlog items.
|
|
85
|
+
- **Increment statuses:** `planned → coded → tested → reviewed`. Change them only with `agent-pmo unit set <module> <k> <status>`. It refuses `tested` without a filled-in PASS test report and test plan, and `reviewed` without enough approved independent reviews. It also re-syncs every place a status appears.
|
|
86
|
+
- **Module status** is derived: `planned`, `coded`, `tested`, `reviewed` (some increments still planned) or `done` (all increments reviewed).
|
|
87
|
+
- **Selection:** `next implement` takes every eligible unit and picks the highest priority. At equal priority, backlog fixes come before planned work, then phase and build order decide. Modules claimed by another agent are skipped. A planned increment is eligible when:
|
|
88
|
+
- earlier increments of the module are tested
|
|
89
|
+
- the index's *Depends on* modules have increment 1 tested
|
|
90
|
+
- everything in **Also requires** is tested
|
|
91
|
+
- earlier phases are tested **in the module and in the modules it depends on** (phase gate). Independent modules never wait for each other.
|
|
92
|
+
- no open P0/P1 backlog item exists for the module or a module it depends on. A bug blocks only its own module and its dependants.
|
|
93
|
+
- `next test` picks the highest-priority `coded` increment; `next review` the highest-priority `tested` one, including units of other agents whose claim says `review-requested` (it prints the branch to check out).
|
|
94
|
+
- **Formats are checked, not guessed:** a malformed increment heading, a missing `**Status:**` line, an unreadable *Also requires*, a malformed requirement ID or a duplicate module name is a `agent-pmo check` error. Nothing is skipped silently.
|
|
95
|
+
- **Regression:** if a tested module's files change after its latest test report, `agent-pmo check` fails until a regression report is written ([workflows/implement.md](workflows/implement.md) step 5).
|
|
96
|
+
|
|
97
|
+
## 4. Rules that apply everywhere
|
|
98
|
+
|
|
99
|
+
- **Change IDs:** one per commit, from `agent-pmo change-id`. It reserves the ID on the shared coordination branch, so no other agent, branch or machine gets it. Every other number (DEC, AS, BL, CR, report files) is reserved the same way.
|
|
100
|
+
- **Changelogs are for specifications and guides only:** a spec's `changelog.md`, the spec index (`docs/specifications/README.md`), the architecture's `docs/architecture/changelog.md`, and the guides' `docs/guide/changelog.md`. Never add changelogs to source code, module READMEs, instruction files or the kit; their history is the git log, linked to the change by `Change-Id` trailers.
|
|
101
|
+
- **Docs never mention the kit:** everything under `docs/` is user-facing. Describe the flow and what to say to an agent, never `agent-pmo` commands or `.pm/` paths; the kit's own instructions stay in `.pm/`. `agent-pmo check` reports `docs/` files that mention the kit.
|
|
102
|
+
- **Every guide change is logged:** a commit that changes the hand-written part of a guide in `docs/guide/` must add a row to `docs/guide/changelog.md`. `agent-pmo check` and the pre-commit hook enforce it. The settings tables `agent-pmo sync` regenerates need no row.
|
|
103
|
+
- **A row only for a document that changed:** log a change only in the changelog of a spec, the index or the architecture that the same commit actually changes (for a folder's `changelog.md`: another file in that folder, such as the spec README or a new report). Process, kit and tooling changes get **no** changelog row — the commit and its trailers are their record. `agent-pmo changelog add` and the pre-commit hook refuse rows for unchanged documents. Add rows with `agent-pmo changelog add --id <ID> --summary "<what>" --reason "<why>" [--link <report>] FILE...`. Tables are newest first, with the latest 5 visible and older rows collapsed. `--link` attaches the test report, code review or security report the change produced. `agent-pmo check` rejects changelog tables anywhere else.
|
|
104
|
+
- **Checks:**
|
|
105
|
+
- `agent-pmo check` must report `0 problem(s)` before every commit.
|
|
106
|
+
- The git hooks (`agent-pmo hooks install`) enforce this together with the secret scan and the configured gates. **Never use `--no-verify`.**
|
|
107
|
+
- If a hook blocks a commit, fix the cause.
|
|
108
|
+
- **Code quality:** follow the language best-practices file, the spec's interfaces, and the module boundaries (only public interfaces of other modules). Keep the full test suite green.
|
|
109
|
+
- **Tests are hermetic:** no network, no real external services, temporary directories.
|
|
110
|
+
- **Reports are evidence:** fill in every `_(fill in)_` with real information, state plainly what was not verified, and never claim a pass you didn't run.
|
|
111
|
+
- **Git:** follow the strategy in `pm.toml`. `agent-pmo land <module> <k>` lands a unit; `agent-pmo land-steps <branch>` explains what it does.
|
|
112
|
+
- `local`: fast-forward merge into the default branch, then `agent-pmo stable update` (moves `stable`, tags a rollback point), and never push unless the user asks.
|
|
113
|
+
- `pr` / `flow`, the branch model:
|
|
114
|
+
```
|
|
115
|
+
unit branch ──agent PR──▶ dev ──▶ dev-<change id> ──user PR──▶ user-reviewed ──CI, all gates green──▶ stable
|
|
116
|
+
```
|
|
117
|
+
Unit branches start from `dev`. After tests and the independent AI review, `agent-pmo land` opens the agent PR into `dev` and merges it as soon as CI allows: **agents never wait for the user**. Right after that merge it creates `dev-<change id>` and opens **the user's review PR** into `user-reviewed`. Its description lists possible issues, the changes made during the agentic review, the issues found, the evidence, and **the related review PRs in implementation order**: the PRs that depend on this one (they contain it; merge this first) and the earlier PRs it contains (merge those first), with module dependencies noted. `agent-pmo pr refresh` keeps those lists current; `land` and CI on `user-reviewed` run it. When the user merges it, CI runs every gate and fast-forwards `stable`, so `stable` always holds the last merged working code. `flow` then promotes `stable → staging → production`.
|
|
118
|
+
- Pushing unit and `dev-*` branches and opening labelled PRs is part of the agreed process. Never push to or merge into `dev`, `user-reviewed`, `stable`, staging or production directly (the pre-push hook blocks it), never merge a user PR yourself, and never force-push shared branches.
|
|
119
|
+
- Agents use their own account or token (a bot), not the user's: providers don't let a PR's author approve it, which is what makes the user's approval on `user-reviewed` real.
|
|
120
|
+
- **Provider-neutral:** GitHub, GitLab and Bitbucket work the same way through `agent-pmo` (REST APIs, no provider CLI). The CI files come from `agent-pmo ci generate`. Never call a provider CLI or API directly for PRs, issues or labels.
|
|
121
|
+
- **OS-neutral:** `agent-pmo` runs the same way on Linux, macOS and Windows. Its own commands never go through a shell. The generated commands are `agent-pmo …` on every OS; the configured gate commands are the only shell commands.
|
|
122
|
+
- **Rollback is always possible:** never rewrite shared history (no `reset --hard` or force-push on shared branches). Undo means a revert commit ([workflows/revert.md](workflows/revert.md)).
|
|
123
|
+
- **Missing tooling:** if a tool the gates need is missing, stop and tell the user the exact install command.
|
|
124
|
+
|
|
125
|
+
## 5. Workflows
|
|
126
|
+
|
|
127
|
+
Each workflow has its own file. **Before you start one, read its file in full; follow its steps in order; when it says so, finish with its check.** `agent-pmo workflow check …` verifies, from the evidence each step leaves (files, statuses, reports, decisions, commit trailers, claims), that no step was skipped; `agent-pmo workflow report` shows how well every unit followed its workflows. A failing check means a step is missing: do it, don't work around it.
|
|
128
|
+
|
|
129
|
+
| Workflow | File | When | Finish with |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
| Planning: zero assumptions | [workflows/planning.md](workflows/planning.md) | planning (setup, change requests, new specs, increments) | — |
|
|
132
|
+
| Project setup | [workflows/setup.md](workflows/setup.md) | no pm.toml / "set up the project" | `agent-pmo workflow check setup` |
|
|
133
|
+
| Implement | [workflows/implement.md](workflows/implement.md) | "implement the next spec" / "continue" | `agent-pmo workflow check implement --module M --increment K` |
|
|
134
|
+
| Test | [workflows/test.md](workflows/test.md) | "test the next spec" | `agent-pmo workflow check test --module M --increment K` |
|
|
135
|
+
| Review | [workflows/review.md](workflows/review.md) | "review the next spec", landing a reviewed unit | `agent-pmo workflow check review --module M --increment K` |
|
|
136
|
+
| Change request | [workflows/change-request.md](workflows/change-request.md) | a new feature or a change to behaviour | `agent-pmo workflow check change-request --cr CR-NNNN` |
|
|
137
|
+
| Security report | [workflows/security.md](workflows/security.md) | "security report", before a review | `agent-pmo workflow check security --module M` |
|
|
138
|
+
| Release and promotion | [workflows/release.md](workflows/release.md) | "release", "promote to staging/production" | — |
|
|
139
|
+
| Merge conflicts | [workflows/merge.md](workflows/merge.md) | a merge conflict, "merge X" | — |
|
|
140
|
+
| Backlog fix | [workflows/fix.md](workflows/fix.md) | a bug report, "fix X", a FIX: unit | `agent-pmo workflow check fix --backlog BL-NNNN` |
|
|
141
|
+
| Scheduled checks | [workflows/scheduled.md](workflows/scheduled.md) | a scheduled-check summary | — |
|
|
142
|
+
| Revert and rollback | [workflows/revert.md](workflows/revert.md) | "revert X", "roll back" | — |
|
|
143
|
+
| Parallel agents | [workflows/parallel.md](workflows/parallel.md) | several agents at once | — |
|
|
144
|
+
| One-off build | [workflows/oneoff.md](workflows/oneoff.md) | "build X quickly", "vibe code X" | `agent-pmo workflow check oneoff --dir oneoff/NAME` |
|
|
145
|
+
| Adopt an existing repository | [workflows/adopt.md](workflows/adopt.md) | "analyse old code" | `agent-pmo workflow check adopt` |
|
|
146
|
+
| Issue triage | [workflows/triage.md](workflows/triage.md) | "fetch repo issues" | `agent-pmo workflow check triage` |
|
|
147
|
+
| Planning through an issue | [workflows/discuss.md](workflows/discuss.md) | "plan the project / the feature in issue #N" | `agent-pmo workflow check discuss --issue N` |
|
|
148
|
+
| Deploy plan | [workflows/deploy.md](workflows/deploy.md) | "plan the deployment", releases and deploys | `agent-pmo workflow check deploy` |
|
|
149
|
+
|
|
150
|
+
## 6. Don'ts
|
|
151
|
+
|
|
152
|
+
- Don't skip ahead of `agent-pmo next`, or combine several increments in one unit. Don't skip a workflow's steps, or report a workflow as done before its check passes. Don't work on a module another agent has claimed.
|
|
153
|
+
- Don't add features beyond the increment's tasks. Put ideas in your report, propose a change request, or file a P3 backlog item.
|
|
154
|
+
- Don't change a published interface without updating the specs of every module that uses it, with changelog reasons.
|
|
155
|
+
- Don't mark anything with unrun or failing gates. Never approve on the user's behalf when approval needs the user. Never review a unit you implemented or tested.
|
|
156
|
+
- Don't bypass hooks (`--no-verify`), force-push, or rewrite shared history.
|
|
157
|
+
- Don't deploy to production, and don't keep production or deploy credentials on your machine.
|
|
158
|
+
- Don't edit generated blocks, statuses, `.pm/`, or `pm.toml` choices the user made without asking.
|
|
159
|
+
- Don't decide on the user's behalf during planning. Register the assumption and ask. Never edit an accepted decision record: supersede it.
|