fact-toolkit 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.
Files changed (46) hide show
  1. fact_toolkit-0.1.0/.github/workflows/release.yml +73 -0
  2. fact_toolkit-0.1.0/.gitignore +15 -0
  3. fact_toolkit-0.1.0/PKG-INFO +681 -0
  4. fact_toolkit-0.1.0/README.md +643 -0
  5. fact_toolkit-0.1.0/commands/fact-audit.md +24 -0
  6. fact_toolkit-0.1.0/commands/fact-next.md +23 -0
  7. fact_toolkit-0.1.0/commands/fact-start.md +19 -0
  8. fact_toolkit-0.1.0/commands/fact-status.md +30 -0
  9. fact_toolkit-0.1.0/dashboard/static/dashboard.css +614 -0
  10. fact_toolkit-0.1.0/dashboard/static/dashboard.js +975 -0
  11. fact_toolkit-0.1.0/dashboard/templates/index.html +109 -0
  12. fact_toolkit-0.1.0/docs/img/dashboard-overview.png +0 -0
  13. fact_toolkit-0.1.0/fact/__init__.py +3 -0
  14. fact_toolkit-0.1.0/fact/agents/__init__.py +59 -0
  15. fact_toolkit-0.1.0/fact/agents/claude_code.py +244 -0
  16. fact_toolkit-0.1.0/fact/cli.py +370 -0
  17. fact_toolkit-0.1.0/fact/dashboard/__init__.py +1 -0
  18. fact_toolkit-0.1.0/fact/dashboard/server.py +302 -0
  19. fact_toolkit-0.1.0/fact/dashboard/state.py +697 -0
  20. fact_toolkit-0.1.0/fact/dashboard/tree.py +61 -0
  21. fact_toolkit-0.1.0/fact/dashboard_proc.py +82 -0
  22. fact_toolkit-0.1.0/fact/data.py +51 -0
  23. fact_toolkit-0.1.0/fact/paths.py +112 -0
  24. fact_toolkit-0.1.0/fact/pricing.py +78 -0
  25. fact_toolkit-0.1.0/fact/spec_state.py +612 -0
  26. fact_toolkit-0.1.0/fact/speckit.py +161 -0
  27. fact_toolkit-0.1.0/hooks/fact_audit.py +154 -0
  28. fact_toolkit-0.1.0/hooks/fact_audit_stop.py +104 -0
  29. fact_toolkit-0.1.0/hooks/fact_compact.py +157 -0
  30. fact_toolkit-0.1.0/hooks/fact_compact_progress.py +199 -0
  31. fact_toolkit-0.1.0/hooks/fact_hook.py +199 -0
  32. fact_toolkit-0.1.0/hooks/fact_session_resume.py +90 -0
  33. fact_toolkit-0.1.0/pricing.json +42 -0
  34. fact_toolkit-0.1.0/pyproject.toml +68 -0
  35. fact_toolkit-0.1.0/skills/fact-audit/SKILL.md +232 -0
  36. fact_toolkit-0.1.0/skills/fact-discovery/SKILL.md +77 -0
  37. fact_toolkit-0.1.0/skills/fact-implement/SKILL.md +105 -0
  38. fact_toolkit-0.1.0/skills/fact-onboarding/SKILL.md +87 -0
  39. fact_toolkit-0.1.0/skills/fact-research/SKILL.md +161 -0
  40. fact_toolkit-0.1.0/skills/fact-rpi-harness/SKILL.md +166 -0
  41. fact_toolkit-0.1.0/skills/fact-skill-installer/SKILL.md +87 -0
  42. fact_toolkit-0.1.0/tests/__init__.py +0 -0
  43. fact_toolkit-0.1.0/tests/test_dashboard_state.py +157 -0
  44. fact_toolkit-0.1.0/tests/test_init_e2e.py +80 -0
  45. fact_toolkit-0.1.0/tests/test_pricing.py +30 -0
  46. fact_toolkit-0.1.0/tests/test_spec_state.py +62 -0
@@ -0,0 +1,73 @@
1
+ # Publishes fact-toolkit to PyPI on tag push (v*).
2
+ #
3
+ # Uses PyPI Trusted Publishing (OIDC) — no API tokens, no secrets to rotate.
4
+ # Setup is one-time on PyPI:
5
+ #
6
+ # 1. Create the project on https://pypi.org (or claim it via a first manual upload).
7
+ # 2. On the project's "Publishing" page, add a Trusted Publisher with:
8
+ # owner = holaPymbu
9
+ # repository = fact
10
+ # workflow = release.yml
11
+ # environment = release
12
+ # 3. Create a `release` environment in this repo's Settings → Environments.
13
+ #
14
+ # After that, `git tag v0.1.0 && git push --tags` (or a GitHub Release on a tag)
15
+ # triggers a build + publish.
16
+
17
+ name: release
18
+
19
+ on:
20
+ push:
21
+ tags:
22
+ - "v*"
23
+
24
+ jobs:
25
+ build:
26
+ name: Build sdist + wheel
27
+ runs-on: ubuntu-latest
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+
31
+ - name: Set up Python
32
+ uses: actions/setup-python@v5
33
+ with:
34
+ python-version: "3.12"
35
+
36
+ - name: Install build backend
37
+ run: python -m pip install --upgrade build
38
+
39
+ - name: Build distributions
40
+ run: python -m build
41
+
42
+ - name: Verify version matches the tag
43
+ run: |
44
+ tag="${GITHUB_REF_NAME#v}"
45
+ pkg_version=$(python -c "import tomllib,sys; print(tomllib.loads(open('pyproject.toml','rb').read().decode())['project']['version'])")
46
+ if [ "$tag" != "$pkg_version" ]; then
47
+ echo "Tag $GITHUB_REF_NAME does not match pyproject version $pkg_version" >&2
48
+ exit 1
49
+ fi
50
+
51
+ - name: Upload artifacts
52
+ uses: actions/upload-artifact@v4
53
+ with:
54
+ name: dist
55
+ path: dist/
56
+
57
+ publish:
58
+ name: Publish to PyPI
59
+ needs: build
60
+ runs-on: ubuntu-latest
61
+ environment:
62
+ name: release
63
+ url: https://pypi.org/p/fact-toolkit
64
+ permissions:
65
+ id-token: write # required for trusted publishing
66
+ steps:
67
+ - uses: actions/download-artifact@v4
68
+ with:
69
+ name: dist
70
+ path: dist/
71
+
72
+ - name: Publish
73
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,15 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .venv/
5
+ venv/
6
+ dist/
7
+ build/
8
+ .pytest_cache/
9
+ .ruff_cache/
10
+ .coverage
11
+ *.log
12
+ .DS_Store
13
+
14
+ # Claude Code local settings (user-specific, not for the repo)
15
+ .claude/settings.local.json