Adopt-and-thin SDLC governance framework
Project description
Emkeel
Adopt-and-thin SDLC governance for AI-assisted teams. Emkeel turns a repo into a
governed project: every change flows ticket → branch → PR → deterministic CI gates →
human-approved merge → the ticket closes itself. "done" is a computed fact, never a
self-attested flag — enforcement lives server-side (CI + branch protection), out of the
agent's reach.
Install (quick reference)
Emkeel is a zero-dependency Python CLI (needs Python 3.11+). New to the command line? Use the step-by-step guide below instead of this table.
| Platform | Install |
|---|---|
| Windows | py -m pip install --user pipx → py -m pipx ensurepath → pipx install emkeel |
| macOS | brew install pipx → pipx install emkeel |
| Linux (with admin/sudo) | sudo apt install pipx → pipx install emkeel |
| Linux/server without sudo | pip install --user --break-system-packages emkeel (safe — zero deps) |
Upgrade: pipx upgrade emkeel · Check version: emkeel version
Step-by-step for beginners (Linux)
Never used a terminal? Do exactly this, in order.
1. Open a terminal. Press Ctrl + Alt + T (or open your apps and search "Terminal"). A window with a text prompt appears — you type a command, then press Enter.
2. Check your Python version. Type and press Enter:
python3 --version
You need 3.11 or higher. If it's lower or says "command not found", install it with
sudo apt install python3 (see the password note in step 3).
3. Install Emkeel. Copy-paste this whole line and press Enter:
sudo apt install -y pipx && pipx ensurepath && pipx install emkeel
sudomeans "do this as administrator" — it asks for your login password (the one you use to sign into the computer). While you type it, nothing appears on screen — that's normal. Type it and press Enter.- When it finishes, close the terminal and open a new one so the
emkeelcommand is found.
Don't have sudo / it says "not in the sudoers file"? Then you're not an administrator on this machine. Use this instead — it needs no admin and is safe (Emkeel has no dependencies, so nothing can conflict):
pip install --user --break-system-packages emkeelThen close and reopen the terminal. (On a shared/company server you can also ask whoever manages it to run
sudo apt install pipxonce — then the normal step 3 works.)
4. Check it worked. Type:
emkeel version
You should see emkeel 0.1.x. If it says "command not found", close and reopen the terminal
and try again.
5. Open your project in your editor (e.g. VS Code) — a project you already have, or a new empty folder.
6. Get your setup instructions. Back in the terminal, type:
emkeel onboard
Then select and copy everything it prints.
7. Hand it to your AI assistant. Open your AI coding agent (e.g. Claude Code inside VS Code), paste what you copied into its chat, and press Enter. It will ask you a few things (your GitHub repo, your Jira address and project key) and set everything up for you — including clickable links for the couple of steps only you can do (create secrets, turn on branch protection).
Done. Your repo is now governed by Emkeel.
Set up your repo (already installed)
emkeel onboard # prints the AI playbook — paste it to your agent
Manual (no AI):
emkeel init . --github-repo OWNER/REPO --jira-url https://you.atlassian.net --jira-project KEY
Non-clobbering (add --dry-run to preview); prints the exact connect links. Full guide: docs/install.md.
Managing Emkeel
| Action | Command |
|---|---|
| Upgrade | pipx upgrade emkeel |
| Check version / updates | emkeel version |
| Remove from a repo | emkeel uninstall (preview; add --yes to apply — keeps emkeel-governance/) |
| Remove the tool | pipx uninstall emkeel |
Use one install method — don't mix pipx with
pip --user/venv; that creates shadowing, conflicting installs. Updates are safe: your repo's CI pinsemkeel~=0.MINOR.0, so it auto-takes patches and minors; a breaking major (e.g.0.2.0) is opt-in (you bump the pin).
What you get
- Deterministic CI gates (server-side, can't be skipped): every change links a ticket; features carry a spec with acceptance criteria; the full test suite runs on every PR.
- AI review-assist — a per-criterion verdict against the spec before you merge.
- Auto-close — merging transitions the linked Jira ticket to Done.
- Clean separation — governance artifacts live in one
emkeel-governance/folder, never shipped.
See docs/lifecycle.md for the model.
Licensed under Apache-2.0 — © 2026 EMillion Networking LTD (see LICENSE / NOTICE).
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 emkeel-0.1.12.tar.gz.
File metadata
- Download URL: emkeel-0.1.12.tar.gz
- Upload date:
- Size: 19.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be5e2edf25f5ce383564ab3de60cb24d389b5e2ca2f07f3bc4824878e5123a3a
|
|
| MD5 |
7463461fcee79ff89bc45759fbd4a0bf
|
|
| BLAKE2b-256 |
b7c85b339193dca88eb91cd48cb890535e160e32e8840e4cf80257383cf63b0a
|
Provenance
The following attestation bundles were made for emkeel-0.1.12.tar.gz:
Publisher:
release.yml on emillionnetworking-ltd-labs/emkeel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emkeel-0.1.12.tar.gz -
Subject digest:
be5e2edf25f5ce383564ab3de60cb24d389b5e2ca2f07f3bc4824878e5123a3a - Sigstore transparency entry: 1751554012
- Sigstore integration time:
-
Permalink:
emillionnetworking-ltd-labs/emkeel@19cda6e63f90aa1fdc73d6b92929bb05bb344990 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/emillionnetworking-ltd-labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@19cda6e63f90aa1fdc73d6b92929bb05bb344990 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emkeel-0.1.12-py3-none-any.whl.
File metadata
- Download URL: emkeel-0.1.12-py3-none-any.whl
- Upload date:
- Size: 23.1 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 |
d1e9f46f20f2d148a612c17f3394862d87fd8750adda8652aa08db0f8bfcb13b
|
|
| MD5 |
c097d820bdfa9b2f8e20962c0554ebcf
|
|
| BLAKE2b-256 |
5060aa22ce3682a0d3833ee0701f0883e4681fb7249518a845b3232a79aec689
|
Provenance
The following attestation bundles were made for emkeel-0.1.12-py3-none-any.whl:
Publisher:
release.yml on emillionnetworking-ltd-labs/emkeel
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emkeel-0.1.12-py3-none-any.whl -
Subject digest:
d1e9f46f20f2d148a612c17f3394862d87fd8750adda8652aa08db0f8bfcb13b - Sigstore transparency entry: 1751554327
- Sigstore integration time:
-
Permalink:
emillionnetworking-ltd-labs/emkeel@19cda6e63f90aa1fdc73d6b92929bb05bb344990 -
Branch / Tag:
refs/tags/v0.1.12 - Owner: https://github.com/emillionnetworking-ltd-labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@19cda6e63f90aa1fdc73d6b92929bb05bb344990 -
Trigger Event:
release
-
Statement type: