Portable process tooling for agent-driven delivery — scripts, playbooks, templates, and specs.
Project description
methodology-framework
Portable process tooling for agent-driven delivery -- scripts, playbooks, templates, and specs.
Installation
pip install -e .
Package contents
methodology_framework.sync_stories_to_jira-- one-way repo-to-Jira story syncmethodology_framework.build_playbook-- build a concrete playbook from a parameterized body + bindingsmethodology_framework.register_playbook_with_devin-- register a rendered playbook with Devin's APImethodology_framework/playbooks/-- parameterized playbook bodies (package data)methodology_framework/templates/-- story and process templates (package data)methodology_framework/specs/-- format specs (package data)methodology_framework.bootstrap_jira-- bootstrap a Jira project with the canonical workflow, custom fields, and automation rulesmethodology_framework/jira_shapes/-- canonical Jira shape definitions (YAML, package data)
Jira Bootstrap
Adopting projects provision their Jira project shape from a single CLI command instead of manually configuring 30+ admin UI screens.
Prerequisites
- Python 3.12+
pip install methodology-framework(orpip install -e .from source)- For
--applymode:JIRA_ADMIN_TOKENenvironment variable set to a Jira admin API token or OAuth Bearer token
Usage
# Dry-run (default) — print what would be applied, no side-effects
python -m methodology_framework bootstrap-jira \
--project-key=MYPROJ \
--jira-host=myorg.atlassian.net \
--dry-run
# Export — emit an importable config bundle (YAML); no API calls
python -m methodology_framework bootstrap-jira \
--project-key=MYPROJ \
--jira-host=myorg.atlassian.net \
--export /tmp/jira-bundle.yaml
# Apply — provision the Jira project via admin API
export JIRA_ADMIN_TOKEN="<your-token>"
python -m methodology_framework bootstrap-jira \
--project-key=MYPROJ \
--jira-host=myorg.atlassian.net \
--apply
# Apply with --force to skip confirmation prompts
python -m methodology_framework bootstrap-jira \
--project-key=MYPROJ \
--jira-host=myorg.atlassian.net \
--apply --force
Flags
| Flag | Required | Description |
|---|---|---|
--project-key |
Yes | Jira project key (e.g. SCRUM). Substituted for {{PROJECT_KEY}} in shape defs. |
--jira-host |
Yes | Jira Cloud host (e.g. myorg.atlassian.net). No https:// prefix. |
--dry-run |
No | Print what would be applied (default if no mode specified). |
--apply |
No | POST/PUT to Jira admin API. Requires JIRA_ADMIN_TOKEN env var. |
--export <path> |
No | Emit importable config bundle at <path>. |
--force |
No | Skip confirmation prompts during --apply. |
Environment variables
| Variable | When needed | Description |
|---|---|---|
JIRA_ADMIN_TOKEN |
--apply mode |
Jira admin API token. Never accepted as a CLI flag. |
Shape definitions
The three canonical shape files shipped as package data:
jira_shapes/workflow.yaml— workflow statuses (To Do, Ready for AI agent, In Progress, In Review, Waiting, Blocked, Done, Won't do) and transitions with actor permissionsjira_shapes/custom_fields.yaml— Story File (URL), Requirement IDs (labels), Agent Estimate (number)jira_shapes/automation_rules.yaml— PR-title-key auto-transition, dependency resolution, BLOCKED protection
For full methodology context see the methodology requirements doc § 4.13.3 ("Jira Bootstrap CLI").
Adopter Integration
Adopting projects consume the methodology framework's CI pipelines via reusable GitHub Actions workflows. Instead of copying workflow YAML into each repo, adopters write a thin caller that references the framework's workflows by SemVer tag.
Version pinning requirement: adopters MUST pin to a specific tag (
@v0.X.Y), never@main. The framework version must be explicit in the caller so updates are deliberate, not silent. This matches the version-pinning model per methodology requirements § 4.13.
Story sync workflow
Syncs story .md files from the adopter's repo to Jira. Create
.github/workflows/sync.yml in the adopter repo:
name: Sync stories to Jira
on:
push:
branches: [main]
paths:
- "docs/stories/**/*.md"
workflow_dispatch:
inputs:
mode:
description: "Sync mode"
required: true
default: "since-ref"
type: choice
options:
- since-ref
- all
jobs:
sync:
uses: whiteout59/methodology-framework/.github/workflows/sync.yml@v0.1.0
with:
project_key: SCRUM
repo: whiteout59/centralized-pipeline-ui
story_path_pattern: "docs/stories/{phase1,phase2}/**/*.md"
cf_story_file: "customfield_10073"
cf_requirement_ids: "customfield_10141"
cf_agent_estimate: "customfield_10074"
mode: ${{ github.event.inputs.mode || 'since-ref' }}
jira_base_url: "https://myorg.atlassian.net"
jira_user_email: "devin-sync@myorg.atlassian.net"
secrets:
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
The mode input defaults to since-ref for routine push-triggered
runs (preserves the 250-story scale guard). Pass mode: all explicitly
for nightly or workflow_dispatch full-corpus syncs.
Secrets forwarding: the caller's
secrets:block must explicitly map each secret the reusable workflow declares. Secrets are NOT inherited by default in reusable workflows. Usingsecrets: inheritworks but is brittle — prefer explicit mapping.
Playbook build + register workflow
Builds a concrete playbook from a parameterized body + bindings file,
then registers it with Devin's API. Create
.github/workflows/build-and-register.yml in the adopter repo:
name: Build and register playbook
on:
push:
branches: [main]
paths:
- "methodology/playbooks/*.body.md"
- "docs/jira-pickup-config.md"
workflow_dispatch:
jobs:
build-and-register:
uses: whiteout59/methodology-framework/.github/workflows/build-and-register.yml@v0.1.0
with:
playbook_body_path: "methodology/playbooks/scrum-router.body.md"
bindings_path: "docs/jira-pickup-config.md"
secrets:
DEVIN_API_TOKEN: ${{ secrets.DEVIN_API_TOKEN }}
Nesting limit: GitHub allows reusable workflow nesting up to 4 levels deep. If your repo wraps these workflows in another caller layer, verify the total nesting depth stays within limits.
PyPI Publishing
The package is published to PyPI automatically via OIDC Trusted Publishers when a SemVer tag is pushed:
git tag v0.1.0
git push origin v0.1.0
The pypi-release.yml workflow builds and publishes using
pypa/gh-action-pypi-publish in OIDC mode -- no PYPI_API_TOKEN secret
is needed. The job uses the pypi GitHub environment for protection rules.
Operator setup (one-time): bind the PyPI project methodology-framework
to the GitHub repo whiteout59/methodology-framework, workflow
pypi-release.yml, environment pypi at
PyPI Trusted Publishers.
Cost tracking via agent_acus
The methodology's post-execution notes include an agent_acus field that
records per-story compute cost. Since agents cannot self-report ACU
consumption mid-session, a post-merge populator workflow backfills the
value from the Devin API after the session completes.
Adopter wiring (3 steps):
- Copy the template caller into your repo:
cp "$(python -c "import methodology_framework; import pathlib; \ print(pathlib.Path(methodology_framework.__file__).parent / \ 'templates/github_workflows/populate-story-acus-caller.yml')")" \ .github/workflows/populate-story-acus.yml
- Set the
DEVIN_API_TOKENrepo secret (Settings > Secrets and variables > Actions > New repository secret). - Pin the framework version in the caller's
uses:line.
The caller fires on merged PRs that touch story files, invokes the
reusable populate-story-acus.yml workflow, and opens a follow-on PR
with the populated ACU values.
Development
pip install -e ".[dev]"
pytest tests/ -v
ruff check src/methodology_framework
ruff format --check src/methodology_framework
mypy --strict src/methodology_framework
License
Apache-2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file methodology_framework-0.1.0.tar.gz.
File metadata
- Download URL: methodology_framework-0.1.0.tar.gz
- Upload date:
- Size: 75.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3feb806dfa94a5e21cb681024dfd68c81963573d348e3b9819bf466d5144d6ce
|
|
| MD5 |
b4a7de34a1e65fdd4c3f1757a75eac58
|
|
| BLAKE2b-256 |
ccef902821e17ed0269c9ad84258ecec6ee9469660451fdfc5ea3087c20248f0
|
Provenance
The following attestation bundles were made for methodology_framework-0.1.0.tar.gz:
Publisher:
pypi-release.yml on whiteout59/methodology-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
methodology_framework-0.1.0.tar.gz -
Subject digest:
3feb806dfa94a5e21cb681024dfd68c81963573d348e3b9819bf466d5144d6ce - Sigstore transparency entry: 1675407423
- Sigstore integration time:
-
Permalink:
whiteout59/methodology-framework@e914e1998b78fe875f62040ea04cd7978c983cc1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/whiteout59
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-release.yml@e914e1998b78fe875f62040ea04cd7978c983cc1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file methodology_framework-0.1.0-py3-none-any.whl.
File metadata
- Download URL: methodology_framework-0.1.0-py3-none-any.whl
- Upload date:
- Size: 64.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f710f6e47ee64eef96ff4d48aa6e8a26736f75287d01a4290ee5f7277acad3a
|
|
| MD5 |
6c8495e3428988644117b864c1f818d3
|
|
| BLAKE2b-256 |
ba07c749be384806137389632f36a58ea294f966ae03c62fe806b74ef731cd26
|
Provenance
The following attestation bundles were made for methodology_framework-0.1.0-py3-none-any.whl:
Publisher:
pypi-release.yml on whiteout59/methodology-framework
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
methodology_framework-0.1.0-py3-none-any.whl -
Subject digest:
8f710f6e47ee64eef96ff4d48aa6e8a26736f75287d01a4290ee5f7277acad3a - Sigstore transparency entry: 1675407427
- Sigstore integration time:
-
Permalink:
whiteout59/methodology-framework@e914e1998b78fe875f62040ea04cd7978c983cc1 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/whiteout59
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-release.yml@e914e1998b78fe875f62040ea04cd7978c983cc1 -
Trigger Event:
push
-
Statement type: