skillrunes 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.
@@ -0,0 +1,46 @@
1
+ # SkillRunes state directory
2
+ .skillrunes/
3
+ .agentlens/
4
+
5
+ # Generated project-local skill file
6
+ SKILL.md
7
+
8
+ # Environment variables
9
+ .env
10
+
11
+ # Python
12
+ __pycache__/
13
+ *.py[cod]
14
+ *.pyo
15
+ *.pyd
16
+ *.so
17
+ *.egg
18
+ *.egg-info/
19
+ .eggs/
20
+ dist/
21
+ build/
22
+ *.whl
23
+
24
+ # Virtual environments
25
+ .venv/
26
+ venv/
27
+ env/
28
+
29
+ # Type checker / linter caches
30
+ .mypy_cache/
31
+ .ruff_cache/
32
+ .pyright/
33
+
34
+ # Testing
35
+ .pytest_cache/
36
+ .coverage
37
+ htmlcov/
38
+
39
+ # IDE
40
+ .vscode/
41
+ .idea/
42
+ *.swp
43
+ *.swo
44
+
45
+ # macOS
46
+ .DS_Store
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: skillrunes
3
+ Version: 0.1.0
4
+ Summary: Analyze coding-agent session transcripts and recursively improve a SKILL.md file
5
+ License: MIT
6
+ Keywords: agents,ai,cli,observability,skills
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: Environment :: Console
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Requires-Python: >=3.11
15
+ Requires-Dist: anthropic>=0.28
16
+ Requires-Dist: fastapi>=0.111
17
+ Requires-Dist: jinja2>=3.1
18
+ Requires-Dist: pydantic>=2.7
19
+ Requires-Dist: python-dotenv>=1.0
20
+ Requires-Dist: rich>=13.7
21
+ Requires-Dist: typer>=0.12
22
+ Requires-Dist: uvicorn[standard]>=0.30
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest>=8.0; extra == 'dev'
25
+ Description-Content-Type: text/markdown
26
+
27
+ # SkillRunes
28
+
29
+ Analyse coding-agent session transcripts and recursively improve a `SKILL.md` file.
30
+
31
+ SkillRunes turns past coding-agent sessions into reusable project memory. It
32
+ reads local transcript files, extracts what the assistant tried, what worked,
33
+ what failed, and what patterns are worth remembering, then uses those learnings
34
+ to generate or update a project `SKILL.md`.
35
+
36
+ The goal is simple: each time you run SkillRunes, your project-level assistant
37
+ instructions get a little sharper.
38
+
39
+ SkillRunes is provider-based. The first working provider is **Claude Code**.
40
+ Codex support is planned and exposed as an experimental provider path, but
41
+ transcript ingestion is not implemented yet.
42
+
43
+ ## How It Works
44
+
45
+ 1. SkillRunes scans transcript files for the current project.
46
+ 2. New sessions are parsed and archived locally.
47
+ 3. A model extracts structured session summaries.
48
+ 4. SkillRunes synthesizes those summaries into a versioned `SKILL.md`.
49
+ 5. The dashboard shows session metrics, failure patterns, and skill history.
50
+
51
+ All SkillRunes state is written inside the current project under `.skillrunes/`.
52
+
53
+ ## Install
54
+
55
+ ```bash
56
+ pip install skillrunes
57
+ ```
58
+
59
+ ## Usage
60
+
61
+ ```bash
62
+ # Initialise for the current project
63
+ skillrunes init
64
+
65
+ # Analyse new sessions and update SKILL.md
66
+ skillrunes run
67
+
68
+ # Choose a transcript provider explicitly
69
+ skillrunes run --provider claude_code
70
+
71
+ # Preview changes without writing files
72
+ skillrunes run --dry-run
73
+
74
+ # Launch the local observability dashboard
75
+ skillrunes visualize
76
+ ```
77
+
78
+ ## Setup
79
+
80
+ SkillRunes needs model access when running transcript analysis.
81
+
82
+ You can use an Anthropic API key:
83
+
84
+ ```bash
85
+ cp .env.example .env
86
+ # Edit .env and set ANTHROPIC_API_KEY=sk-ant-...
87
+ ```
88
+
89
+ Or, if no `ANTHROPIC_API_KEY` is set, SkillRunes falls back to the local Claude
90
+ Code CLI:
91
+
92
+ ```bash
93
+ claude --print
94
+ ```
95
+
96
+ That means SkillRunes can run without an Anthropic API key as long as Claude
97
+ Code is installed and authenticated. Without either an API key or a working
98
+ Claude Code login, `skillrunes run` cannot extract summaries.
99
+
100
+ Provider selection can also be configured with:
101
+
102
+ ```bash
103
+ export SKILLRUNES_PROVIDER=claude_code
104
+ ```
105
+
106
+ ## Providers
107
+
108
+ Supported provider names today:
109
+
110
+ - `claude_code` — supported, default
111
+ - `codex` — planned / experimental; currently raises a clear not-implemented error
112
+
113
+ The Claude Code provider reads JSONL transcripts from `~/.claude/projects/` and
114
+ matches sessions to the current working directory.
115
+
116
+ ## Local Files
117
+
118
+ Running SkillRunes creates:
119
+
120
+ - `.skillrunes/sessions/` — raw transcript archives and extracted summaries
121
+ - `.skillrunes/skills/` — versioned `SKILL.md` history
122
+ - `.skillrunes/metrics.json` — dashboard metrics
123
+ - `SKILL.md` — the current generated skill file
124
+
125
+ ## Roadmap
126
+
127
+ - Claude Code provider
128
+ - Codex provider
129
+ - Cursor provider
130
+ - Provider-agnostic dashboard
@@ -0,0 +1,104 @@
1
+ # SkillRunes
2
+
3
+ Analyse coding-agent session transcripts and recursively improve a `SKILL.md` file.
4
+
5
+ SkillRunes turns past coding-agent sessions into reusable project memory. It
6
+ reads local transcript files, extracts what the assistant tried, what worked,
7
+ what failed, and what patterns are worth remembering, then uses those learnings
8
+ to generate or update a project `SKILL.md`.
9
+
10
+ The goal is simple: each time you run SkillRunes, your project-level assistant
11
+ instructions get a little sharper.
12
+
13
+ SkillRunes is provider-based. The first working provider is **Claude Code**.
14
+ Codex support is planned and exposed as an experimental provider path, but
15
+ transcript ingestion is not implemented yet.
16
+
17
+ ## How It Works
18
+
19
+ 1. SkillRunes scans transcript files for the current project.
20
+ 2. New sessions are parsed and archived locally.
21
+ 3. A model extracts structured session summaries.
22
+ 4. SkillRunes synthesizes those summaries into a versioned `SKILL.md`.
23
+ 5. The dashboard shows session metrics, failure patterns, and skill history.
24
+
25
+ All SkillRunes state is written inside the current project under `.skillrunes/`.
26
+
27
+ ## Install
28
+
29
+ ```bash
30
+ pip install skillrunes
31
+ ```
32
+
33
+ ## Usage
34
+
35
+ ```bash
36
+ # Initialise for the current project
37
+ skillrunes init
38
+
39
+ # Analyse new sessions and update SKILL.md
40
+ skillrunes run
41
+
42
+ # Choose a transcript provider explicitly
43
+ skillrunes run --provider claude_code
44
+
45
+ # Preview changes without writing files
46
+ skillrunes run --dry-run
47
+
48
+ # Launch the local observability dashboard
49
+ skillrunes visualize
50
+ ```
51
+
52
+ ## Setup
53
+
54
+ SkillRunes needs model access when running transcript analysis.
55
+
56
+ You can use an Anthropic API key:
57
+
58
+ ```bash
59
+ cp .env.example .env
60
+ # Edit .env and set ANTHROPIC_API_KEY=sk-ant-...
61
+ ```
62
+
63
+ Or, if no `ANTHROPIC_API_KEY` is set, SkillRunes falls back to the local Claude
64
+ Code CLI:
65
+
66
+ ```bash
67
+ claude --print
68
+ ```
69
+
70
+ That means SkillRunes can run without an Anthropic API key as long as Claude
71
+ Code is installed and authenticated. Without either an API key or a working
72
+ Claude Code login, `skillrunes run` cannot extract summaries.
73
+
74
+ Provider selection can also be configured with:
75
+
76
+ ```bash
77
+ export SKILLRUNES_PROVIDER=claude_code
78
+ ```
79
+
80
+ ## Providers
81
+
82
+ Supported provider names today:
83
+
84
+ - `claude_code` — supported, default
85
+ - `codex` — planned / experimental; currently raises a clear not-implemented error
86
+
87
+ The Claude Code provider reads JSONL transcripts from `~/.claude/projects/` and
88
+ matches sessions to the current working directory.
89
+
90
+ ## Local Files
91
+
92
+ Running SkillRunes creates:
93
+
94
+ - `.skillrunes/sessions/` — raw transcript archives and extracted summaries
95
+ - `.skillrunes/skills/` — versioned `SKILL.md` history
96
+ - `.skillrunes/metrics.json` — dashboard metrics
97
+ - `SKILL.md` — the current generated skill file
98
+
99
+ ## Roadmap
100
+
101
+ - Claude Code provider
102
+ - Codex provider
103
+ - Cursor provider
104
+ - Provider-agnostic dashboard
@@ -0,0 +1,49 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "skillrunes"
7
+ version = "0.1.0"
8
+ description = "Analyze coding-agent session transcripts and recursively improve a SKILL.md file"
9
+ readme = "README.md"
10
+ requires-python = ">=3.11"
11
+ license = { text = "MIT" }
12
+ keywords = ["agents", "ai", "cli", "observability", "skills"]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "Environment :: Console",
16
+ "Intended Audience :: Developers",
17
+ "License :: OSI Approved :: MIT License",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ ]
22
+ dependencies = [
23
+ "typer>=0.12",
24
+ "anthropic>=0.28",
25
+ "fastapi>=0.111",
26
+ "uvicorn[standard]>=0.30",
27
+ "jinja2>=3.1",
28
+ "pydantic>=2.7",
29
+ "rich>=13.7",
30
+ "python-dotenv>=1.0",
31
+ ]
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "pytest>=8.0",
36
+ ]
37
+
38
+ [project.scripts]
39
+ skillrunes = "skillrunes.__main__:main"
40
+
41
+ [tool.hatch.build.targets.wheel]
42
+ packages = ["skillrunes"]
43
+
44
+ [tool.hatch.build.targets.sdist]
45
+ include = [
46
+ "skillrunes/",
47
+ "README.md",
48
+ "pyproject.toml",
49
+ ]
@@ -0,0 +1,3 @@
1
+ """SkillRunes — analyze coding-agent transcripts and recursively improve a SKILL.md file."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,11 @@
1
+ """Entry point for `python -m skillrunes` and the `skillrunes` console script."""
2
+
3
+
4
+ def main() -> None:
5
+ """Invoke the Typer CLI application."""
6
+ from skillrunes.cli import app
7
+ app()
8
+
9
+
10
+ if __name__ == "__main__":
11
+ main()