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.
- skillrunes-0.1.0/.gitignore +46 -0
- skillrunes-0.1.0/PKG-INFO +130 -0
- skillrunes-0.1.0/README.md +104 -0
- skillrunes-0.1.0/pyproject.toml +49 -0
- skillrunes-0.1.0/skillrunes/__init__.py +3 -0
- skillrunes-0.1.0/skillrunes/__main__.py +11 -0
- skillrunes-0.1.0/skillrunes/cli.py +367 -0
- skillrunes-0.1.0/skillrunes/client.py +283 -0
- skillrunes-0.1.0/skillrunes/config.py +31 -0
- skillrunes-0.1.0/skillrunes/dashboard/__init__.py +5 -0
- skillrunes-0.1.0/skillrunes/dashboard/server.py +170 -0
- skillrunes-0.1.0/skillrunes/dashboard/static/.gitkeep +0 -0
- skillrunes-0.1.0/skillrunes/dashboard/templates/.gitkeep +0 -0
- skillrunes-0.1.0/skillrunes/dashboard/templates/index.html +635 -0
- skillrunes-0.1.0/skillrunes/extract.py +295 -0
- skillrunes-0.1.0/skillrunes/ingest/__init__.py +77 -0
- skillrunes-0.1.0/skillrunes/ingest/base.py +60 -0
- skillrunes-0.1.0/skillrunes/ingest/claude_code.py +229 -0
- skillrunes-0.1.0/skillrunes/ingest/codex.py +40 -0
- skillrunes-0.1.0/skillrunes/models.py +203 -0
- skillrunes-0.1.0/skillrunes/store.py +214 -0
- skillrunes-0.1.0/skillrunes/synthesize.py +129 -0
- skillrunes-0.1.0/skillrunes/utils.py +92 -0
|
@@ -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
|
+
]
|