mk-spec-master 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.
- mk_spec_master-0.1.0/.dockerignore +15 -0
- mk_spec_master-0.1.0/.github/workflows/publish.yml +74 -0
- mk_spec_master-0.1.0/.gitignore +42 -0
- mk_spec_master-0.1.0/Dockerfile +28 -0
- mk_spec_master-0.1.0/LICENSE +21 -0
- mk_spec_master-0.1.0/PKG-INFO +78 -0
- mk_spec_master-0.1.0/README.md +55 -0
- mk_spec_master-0.1.0/docs/prd.md +477 -0
- mk_spec_master-0.1.0/examples/configs/claude_desktop_config.example.json +20 -0
- mk_spec_master-0.1.0/examples/specs/SPEC-001-apply-discount.md +29 -0
- mk_spec_master-0.1.0/pyproject.toml +46 -0
- mk_spec_master-0.1.0/smithery.yaml +49 -0
- mk_spec_master-0.1.0/src/mk_spec_master/__init__.py +3 -0
- mk_spec_master-0.1.0/src/mk_spec_master/adapters/__init__.py +26 -0
- mk_spec_master-0.1.0/src/mk_spec_master/adapters/base.py +46 -0
- mk_spec_master-0.1.0/src/mk_spec_master/adapters/github_issues.py +137 -0
- mk_spec_master-0.1.0/src/mk_spec_master/adapters/markdown_local.py +143 -0
- mk_spec_master-0.1.0/src/mk_spec_master/config.py +28 -0
- mk_spec_master-0.1.0/src/mk_spec_master/index/__init__.py +5 -0
- mk_spec_master-0.1.0/src/mk_spec_master/index/traceability.py +29 -0
- mk_spec_master-0.1.0/src/mk_spec_master/parsers/__init__.py +5 -0
- mk_spec_master-0.1.0/src/mk_spec_master/server.py +226 -0
- mk_spec_master-0.1.0/src/mk_spec_master/tools/__init__.py +8 -0
- mk_spec_master-0.1.0/src/mk_spec_master/tools/coverage.py +57 -0
- mk_spec_master-0.1.0/src/mk_spec_master/tools/scenarios.py +176 -0
- mk_spec_master-0.1.0/src/mk_spec_master/tools/specs.py +118 -0
- mk_spec_master-0.1.0/tests/conftest.py +18 -0
- mk_spec_master-0.1.0/tests/test_smoke.py +179 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
# Triggered by every published GitHub Release. Releases are created
|
|
4
|
+
# manually (via `gh release create` or the GitHub UI) so we keep
|
|
5
|
+
# control over what hits PyPI — no auto-publish on tag push.
|
|
6
|
+
#
|
|
7
|
+
# Authentication: PyPI Trusted Publishing (OIDC). No API token stored;
|
|
8
|
+
# instead a one-time setup on PyPI links this repo + workflow file to
|
|
9
|
+
# the project name. Setup mirrors mk-qa-master's "Publishing" section.
|
|
10
|
+
|
|
11
|
+
on:
|
|
12
|
+
release:
|
|
13
|
+
types: [published]
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
# OIDC token exchange for Trusted Publishing — no PYPI_API_TOKEN secret needed.
|
|
17
|
+
id-token: write
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
build:
|
|
22
|
+
name: Build distribution
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v4
|
|
26
|
+
|
|
27
|
+
- name: Set up Python
|
|
28
|
+
uses: actions/setup-python@v5
|
|
29
|
+
with:
|
|
30
|
+
python-version: "3.12"
|
|
31
|
+
|
|
32
|
+
- name: Install build tooling
|
|
33
|
+
run: python -m pip install --upgrade build twine
|
|
34
|
+
|
|
35
|
+
- name: Verify pyproject version matches the release tag
|
|
36
|
+
# The release tag (e.g. `v0.1.0`) must equal `v<pyproject.version>`.
|
|
37
|
+
# Catches the "tagged but forgot to bump pyproject" failure mode
|
|
38
|
+
# before we ship a wrong-versioned wheel.
|
|
39
|
+
run: |
|
|
40
|
+
set -eu
|
|
41
|
+
TAG="${GITHUB_REF_NAME#v}"
|
|
42
|
+
PY_VER=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
|
|
43
|
+
echo "release tag (without v) = $TAG"
|
|
44
|
+
echo "pyproject version = $PY_VER"
|
|
45
|
+
test "$TAG" = "$PY_VER"
|
|
46
|
+
|
|
47
|
+
- name: Build sdist + wheel
|
|
48
|
+
run: python -m build
|
|
49
|
+
|
|
50
|
+
- name: Validate distribution metadata
|
|
51
|
+
run: twine check dist/*
|
|
52
|
+
|
|
53
|
+
- name: Upload distribution artifacts
|
|
54
|
+
uses: actions/upload-artifact@v4
|
|
55
|
+
with:
|
|
56
|
+
name: dist
|
|
57
|
+
path: dist/
|
|
58
|
+
|
|
59
|
+
publish:
|
|
60
|
+
name: Publish to PyPI
|
|
61
|
+
needs: build
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
environment:
|
|
64
|
+
name: pypi
|
|
65
|
+
url: https://pypi.org/project/mk-spec-master/
|
|
66
|
+
steps:
|
|
67
|
+
- name: Download distribution artifacts
|
|
68
|
+
uses: actions/download-artifact@v4
|
|
69
|
+
with:
|
|
70
|
+
name: dist
|
|
71
|
+
path: dist/
|
|
72
|
+
|
|
73
|
+
- name: Publish to PyPI
|
|
74
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*$py.class
|
|
4
|
+
*.so
|
|
5
|
+
.Python
|
|
6
|
+
build/
|
|
7
|
+
develop-eggs/
|
|
8
|
+
dist/
|
|
9
|
+
downloads/
|
|
10
|
+
eggs/
|
|
11
|
+
.eggs/
|
|
12
|
+
lib/
|
|
13
|
+
lib64/
|
|
14
|
+
parts/
|
|
15
|
+
sdist/
|
|
16
|
+
var/
|
|
17
|
+
wheels/
|
|
18
|
+
*.egg-info/
|
|
19
|
+
.installed.cfg
|
|
20
|
+
*.egg
|
|
21
|
+
MANIFEST
|
|
22
|
+
|
|
23
|
+
.venv
|
|
24
|
+
venv/
|
|
25
|
+
ENV/
|
|
26
|
+
|
|
27
|
+
.pytest_cache/
|
|
28
|
+
.mypy_cache/
|
|
29
|
+
.ruff_cache/
|
|
30
|
+
.tox/
|
|
31
|
+
htmlcov/
|
|
32
|
+
.coverage
|
|
33
|
+
.coverage.*
|
|
34
|
+
|
|
35
|
+
.idea/
|
|
36
|
+
.vscode/
|
|
37
|
+
*.swp
|
|
38
|
+
*.swo
|
|
39
|
+
.DS_Store
|
|
40
|
+
|
|
41
|
+
# mk-spec-master runtime data (when dogfooding in this repo)
|
|
42
|
+
.mk-spec-master/
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# MK Spec Master container — built primarily so Glama (and any other MCP
|
|
2
|
+
# catalog that introspects servers in a sandbox) can boot the server,
|
|
3
|
+
# send `initialize` + `tools/list` over stdio, and confirm a clean
|
|
4
|
+
# JSON-RPC response.
|
|
5
|
+
#
|
|
6
|
+
# Day-to-day use stays `uvx mk-spec-master` on the host: real spec
|
|
7
|
+
# fetches need access to the user's repo, network for Linear/JIRA APIs,
|
|
8
|
+
# and credentials that live outside any sane container.
|
|
9
|
+
|
|
10
|
+
FROM python:3.12-slim
|
|
11
|
+
|
|
12
|
+
# Install from local source so the image always reflects the current
|
|
13
|
+
# commit (introspection should pass even before a PyPI release).
|
|
14
|
+
WORKDIR /srv
|
|
15
|
+
COPY pyproject.toml README.md LICENSE ./
|
|
16
|
+
COPY src/ ./src/
|
|
17
|
+
RUN pip install --no-cache-dir .
|
|
18
|
+
|
|
19
|
+
# Defaults for the introspection probe. SPEC_PROJECT_ROOT just needs to
|
|
20
|
+
# resolve to a writable path — config.py only `.resolve()`s it, doesn't
|
|
21
|
+
# require it to exist until a real fetch happens (which we don't expect
|
|
22
|
+
# inside this container).
|
|
23
|
+
ENV SPEC_SOURCE=markdown_local \
|
|
24
|
+
SPEC_PROJECT_ROOT=/tmp/spec-project \
|
|
25
|
+
PYTHONUNBUFFERED=1
|
|
26
|
+
|
|
27
|
+
WORKDIR /tmp/spec-project
|
|
28
|
+
ENTRYPOINT ["python", "-m", "mk_spec_master.server"]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jack Kao (kao273183)
|
|
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,78 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mk-spec-master
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: MCP server bridging specs (Linear / JIRA / GitHub Issues / Notion / Markdown / Figma) to tests, with bidirectional traceability and a spec-quality coach (AI 規格大師)
|
|
5
|
+
Project-URL: Homepage, https://github.com/kao273183/mk-spec-master
|
|
6
|
+
Project-URL: Repository, https://github.com/kao273183/mk-spec-master
|
|
7
|
+
Author-email: Jack Kao <52775937+kao273183@users.noreply.github.com>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: acceptance-criteria,mcp,model-context-protocol,requirements,sdd,spec-driven-development,testing,traceability
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
19
|
+
Classifier: Topic :: Software Development :: Testing
|
|
20
|
+
Requires-Python: >=3.10
|
|
21
|
+
Requires-Dist: mcp>=1.0.0
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
<h1 align="center">MK Spec Master</h1>
|
|
25
|
+
|
|
26
|
+
<p align="center">
|
|
27
|
+
<em>AI 規格大師 — specs in, scenarios out. Bidirectional traceability so you always know what's tested.</em>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
|
|
32
|
+
<img src="https://img.shields.io/badge/status-pre--alpha-orange.svg" alt="Status: Pre-alpha" />
|
|
33
|
+
</p>
|
|
34
|
+
|
|
35
|
+
> **⚠️ Alpha — v0.1 MVP.** 7 tools shipped (markdown_local + github_issues sources). Full design in [`docs/prd.md`](docs/prd.md). Next: Linear / JIRA adapters + coverage matrix in v0.2.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## What this is
|
|
40
|
+
|
|
41
|
+
An MCP server that turns specs — Linear tickets, JIRA stories, GitHub Issues, Notion pages, Figma annotations, plain Markdown — into structured test scenarios, hands them to any test runner (via [`mk-qa-master`](https://github.com/kao273183/mk-qa-master) or directly), and maintains a live spec ↔ test coverage matrix.
|
|
42
|
+
|
|
43
|
+
Sibling to `mk-qa-master` in the `mk-*` family of opinionated AI-QA MCPs.
|
|
44
|
+
|
|
45
|
+
## Why this is missing from the ecosystem
|
|
46
|
+
|
|
47
|
+
| Tool | Lock-in | What we do differently |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| AWS Kiro | AWS IDE only, proprietary | MCP-native, multi-client, open source |
|
|
50
|
+
| Jama Connect MCP | $50k+/year, enterprise-only | SMB / indie / AI-native segment |
|
|
51
|
+
| GitHub Spec Kit | spec→code; runtime test coverage out of scope | We add runtime test coverage |
|
|
52
|
+
| testomat.io / JIRA MCPs | Single source (JIRA), SaaS lock | Multi-source, file-based index, no lock |
|
|
53
|
+
|
|
54
|
+
See [`docs/prd.md` §4](docs/prd.md) for the full positioning.
|
|
55
|
+
|
|
56
|
+
## Status
|
|
57
|
+
|
|
58
|
+
| Milestone | Target | Status |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| v0.1 (MVP — markdown_local + github_issues, 7 tools) | June 2026 | ✅ Shipped |
|
|
61
|
+
| v0.2 (Linear, JIRA, coverage matrix, spec-quality coach) | Aug 2026 | ⬜ |
|
|
62
|
+
| v0.3 (Notion, Figma, auto-link, optimization plan) | Oct 2026 | ⬜ |
|
|
63
|
+
| v1.0 (production-ready, docs, integration recipes) | Q4 2026 | ⬜ |
|
|
64
|
+
|
|
65
|
+
## Quick design read
|
|
66
|
+
|
|
67
|
+
- **Vision + problem**: [`docs/prd.md` §1–2](docs/prd.md)
|
|
68
|
+
- **Competitive positioning**: [`docs/prd.md` §4](docs/prd.md)
|
|
69
|
+
- **Tool surface**: [`docs/prd.md` §8](docs/prd.md)
|
|
70
|
+
- **Walkthrough (end-to-end with mk-qa-master)**: [`docs/prd.md` §19](docs/prd.md)
|
|
71
|
+
|
|
72
|
+
## Related
|
|
73
|
+
|
|
74
|
+
- [mk-qa-master](https://github.com/kao273183/mk-qa-master) — the QA loop sibling. Tests run via mk-qa-master; coverage tracked here.
|
|
75
|
+
|
|
76
|
+
## License
|
|
77
|
+
|
|
78
|
+
MIT — see [LICENSE](LICENSE).
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<h1 align="center">MK Spec Master</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<em>AI 規格大師 — specs in, scenarios out. Bidirectional traceability so you always know what's tested.</em>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a>
|
|
9
|
+
<img src="https://img.shields.io/badge/status-pre--alpha-orange.svg" alt="Status: Pre-alpha" />
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
> **⚠️ Alpha — v0.1 MVP.** 7 tools shipped (markdown_local + github_issues sources). Full design in [`docs/prd.md`](docs/prd.md). Next: Linear / JIRA adapters + coverage matrix in v0.2.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## What this is
|
|
17
|
+
|
|
18
|
+
An MCP server that turns specs — Linear tickets, JIRA stories, GitHub Issues, Notion pages, Figma annotations, plain Markdown — into structured test scenarios, hands them to any test runner (via [`mk-qa-master`](https://github.com/kao273183/mk-qa-master) or directly), and maintains a live spec ↔ test coverage matrix.
|
|
19
|
+
|
|
20
|
+
Sibling to `mk-qa-master` in the `mk-*` family of opinionated AI-QA MCPs.
|
|
21
|
+
|
|
22
|
+
## Why this is missing from the ecosystem
|
|
23
|
+
|
|
24
|
+
| Tool | Lock-in | What we do differently |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| AWS Kiro | AWS IDE only, proprietary | MCP-native, multi-client, open source |
|
|
27
|
+
| Jama Connect MCP | $50k+/year, enterprise-only | SMB / indie / AI-native segment |
|
|
28
|
+
| GitHub Spec Kit | spec→code; runtime test coverage out of scope | We add runtime test coverage |
|
|
29
|
+
| testomat.io / JIRA MCPs | Single source (JIRA), SaaS lock | Multi-source, file-based index, no lock |
|
|
30
|
+
|
|
31
|
+
See [`docs/prd.md` §4](docs/prd.md) for the full positioning.
|
|
32
|
+
|
|
33
|
+
## Status
|
|
34
|
+
|
|
35
|
+
| Milestone | Target | Status |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| v0.1 (MVP — markdown_local + github_issues, 7 tools) | June 2026 | ✅ Shipped |
|
|
38
|
+
| v0.2 (Linear, JIRA, coverage matrix, spec-quality coach) | Aug 2026 | ⬜ |
|
|
39
|
+
| v0.3 (Notion, Figma, auto-link, optimization plan) | Oct 2026 | ⬜ |
|
|
40
|
+
| v1.0 (production-ready, docs, integration recipes) | Q4 2026 | ⬜ |
|
|
41
|
+
|
|
42
|
+
## Quick design read
|
|
43
|
+
|
|
44
|
+
- **Vision + problem**: [`docs/prd.md` §1–2](docs/prd.md)
|
|
45
|
+
- **Competitive positioning**: [`docs/prd.md` §4](docs/prd.md)
|
|
46
|
+
- **Tool surface**: [`docs/prd.md` §8](docs/prd.md)
|
|
47
|
+
- **Walkthrough (end-to-end with mk-qa-master)**: [`docs/prd.md` §19](docs/prd.md)
|
|
48
|
+
|
|
49
|
+
## Related
|
|
50
|
+
|
|
51
|
+
- [mk-qa-master](https://github.com/kao273183/mk-qa-master) — the QA loop sibling. Tests run via mk-qa-master; coverage tracked here.
|
|
52
|
+
|
|
53
|
+
## License
|
|
54
|
+
|
|
55
|
+
MIT — see [LICENSE](LICENSE).
|