ftl-project-expert 0.5.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.
- ftl_project_expert-0.5.0/.gitignore +17 -0
- ftl_project_expert-0.5.0/PKG-INFO +196 -0
- ftl_project_expert-0.5.0/README.md +184 -0
- ftl_project_expert-0.5.0/ftl_project_expert/__init__.py +1 -0
- ftl_project_expert-0.5.0/ftl_project_expert/cli.py +2432 -0
- ftl_project_expert-0.5.0/ftl_project_expert/data/SKILL.md +61 -0
- ftl_project_expert-0.5.0/ftl_project_expert/llm.py +89 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/__init__.py +15 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/common.py +30 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/derive.py +83 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/explore.py +59 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/propose.py +32 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/research.py +65 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/scan.py +98 -0
- ftl_project_expert-0.5.0/ftl_project_expert/prompts/summary.py +33 -0
- ftl_project_expert-0.5.0/ftl_project_expert/sources/__init__.py +15 -0
- ftl_project_expert-0.5.0/ftl_project_expert/sources/github.py +213 -0
- ftl_project_expert-0.5.0/ftl_project_expert/sources/gitlab.py +250 -0
- ftl_project_expert-0.5.0/ftl_project_expert/sources/jira.py +262 -0
- ftl_project_expert-0.5.0/ftl_project_expert/sources/models.py +177 -0
- ftl_project_expert-0.5.0/ftl_project_expert/topics.py +158 -0
- ftl_project_expert-0.5.0/pyproject.toml +20 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/00-auto-functions.json +74 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-claude-response.txt +98 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-gemini-response.txt +33 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-observations.json +195 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-observe-prompt.txt +689 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-observe-response.txt +16 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/01-review-prompt.txt +950 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/observations.json +267 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-09_10-40-22/report.md +117 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/00-auto-functions.json +88 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-claude-response.txt +137 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-gemini-response.txt +168 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-observations.json +236 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-observe-prompt.txt +811 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-observe-response.txt +19 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/01-review-prompt.txt +1127 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/observations.json +322 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-13-42/report.md +256 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/00-auto-functions.json +95 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-claude-response.txt +130 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-gemini-response.txt +92 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-observations.json +264 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-observe-prompt.txt +884 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-observe-response.txt +20 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/01-review-prompt.txt +1235 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/observations.json +357 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-3/2026-06-15_16-20-55/report.md +186 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/00-auto-functions.json +32 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-claude-response.txt +108 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-gemini-response.txt +68 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-observations.json +421 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-observe-prompt.txt +603 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-observe-response.txt +21 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/01-review-prompt.txt +1048 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/observations.json +451 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-24-22/report.md +150 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/00-auto-functions.json +32 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-claude-response.txt +114 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-gemini-response.txt +42 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-observations.json +123 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-observe-prompt.txt +599 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-observe-response.txt +18 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/01-review-prompt.txt +746 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/observations.json +153 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-45-00/report.md +123 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/00-auto-functions.json +32 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-claude-response.txt +103 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-gemini-response.txt +54 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-observations.json +238 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-observe-prompt.txt +605 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-observe-response.txt +17 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/01-review-prompt.txt +867 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/observations.json +268 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-5/2026-06-15_17-51-21/report.md +133 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/00-auto-functions.json +37 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-claude-response.txt +81 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-gemini-response.txt +48 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-observations.json +131 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-observe-prompt.txt +303 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-observe-response.txt +13 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/01-review-prompt.txt +463 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/observations.json +166 -0
- ftl_project_expert-0.5.0/reviews/benthomasson-ftl-project-expert-6/2026-06-15_18-11-09/report.md +97 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-claude-response.txt +71 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-gemini-response.txt +27 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-observations.json +332 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-observe-prompt.txt +228 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-observe-response.txt +16 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/01-review-prompt.txt +554 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/observations.json +332 -0
- ftl_project_expert-0.5.0/reviews/pr-6/2026-06-15_19-37-09/report.md +73 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ftl-project-expert
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: Build expert knowledge bases from project management data
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Requires-Dist: click>=8.0
|
|
7
|
+
Requires-Dist: requests>=2.28
|
|
8
|
+
Provides-Extra: embeddings
|
|
9
|
+
Requires-Dist: fastembed>=0.7.4; extra == 'embeddings'
|
|
10
|
+
Requires-Dist: numpy; extra == 'embeddings'
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
|
|
13
|
+
# project-expert
|
|
14
|
+
|
|
15
|
+
Deep project analysis through belief networks. Systematically scans issue trackers (GitHub, GitLab, Jira), extracts factual beliefs about project state, builds dependency networks, and surfaces risks that status meetings, dashboards, and individual issue views miss.
|
|
16
|
+
|
|
17
|
+
**What it finds:** Not just overdue tickets, but structural project risks — overloaded teams with no recent closures, epics with hidden blockers, milestones at risk from upstream dependencies, and patterns across issues that only become visible when you build a theory of the project and reason over it.
|
|
18
|
+
|
|
19
|
+
**How it works:** project-expert fetches issues from your tracker, runs them through an LLM for structured analysis, extracts factual claims into a reason maintenance system, and derives logical consequences across the belief network — surfacing the issues that matter most.
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
uv tool install git+https://github.com/benthomasson/ftl-project-expert
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Prerequisites — these CLIs must be on your PATH:
|
|
28
|
+
|
|
29
|
+
- [`entry`](https://github.com/benthomasson/entry) — chronological entry creation
|
|
30
|
+
- [`beliefs`](https://github.com/benthomasson/beliefs) or [`reasons`](https://github.com/benthomasson/reasons) — belief registry management
|
|
31
|
+
- `claude` or `gemini` — at least one LLM CLI
|
|
32
|
+
|
|
33
|
+
Platform CLIs (install whichever you need):
|
|
34
|
+
|
|
35
|
+
- [`gh`](https://cli.github.com) — GitHub CLI
|
|
36
|
+
- [`glab`](https://gitlab.com/gitlab-org/cli) — GitLab CLI
|
|
37
|
+
- For Jira: set `JIRA_URL`, `JIRA_USER`, `JIRA_TOKEN` env vars
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 1. Point project-expert at an issue tracker
|
|
43
|
+
project-expert init github owner/repo --domain "Payment platform"
|
|
44
|
+
|
|
45
|
+
# 2. Scan issues for an overview
|
|
46
|
+
project-expert scan
|
|
47
|
+
|
|
48
|
+
# 3. Explore topics one at a time
|
|
49
|
+
project-expert explore # next topic
|
|
50
|
+
project-expert explore --pick 3 # specific topic
|
|
51
|
+
project-expert explore --pick 1,3,8 # multiple (stable indices)
|
|
52
|
+
project-expert explore --skip # skip and move on
|
|
53
|
+
|
|
54
|
+
# 4. Extract beliefs from exploration entries
|
|
55
|
+
project-expert propose-beliefs
|
|
56
|
+
# Review proposed-beliefs.md — mark entries ACCEPT or REJECT
|
|
57
|
+
project-expert accept-beliefs
|
|
58
|
+
|
|
59
|
+
# 5. Check progress
|
|
60
|
+
project-expert status
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## How It Works
|
|
64
|
+
|
|
65
|
+
project-expert follows a **scan → explore → distill → reason** pipeline:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
scan Fetch issues → LLM analysis → topic queue
|
|
69
|
+
│
|
|
70
|
+
▼
|
|
71
|
+
explore Pop one topic, fetch full issue, analyze deeply
|
|
72
|
+
│ ├── issue Single issue deep-dive
|
|
73
|
+
│ ├── epic Epic with children/blockers
|
|
74
|
+
│ ├── milestone Milestone risk assessment
|
|
75
|
+
│ └── general Cross-cutting analysis
|
|
76
|
+
│
|
|
77
|
+
▼
|
|
78
|
+
propose-beliefs Batch-extract factual claims from entries
|
|
79
|
+
│
|
|
80
|
+
▼
|
|
81
|
+
accept-beliefs Import reviewed claims into beliefs.md / reasons.db
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Each exploration creates a dated entry in `entries/` and may generate new topics, so the queue grows organically as you learn.
|
|
85
|
+
|
|
86
|
+
## Supported Platforms
|
|
87
|
+
|
|
88
|
+
| Platform | Init Command | CLI Required |
|
|
89
|
+
|----------|-------------|-------------|
|
|
90
|
+
| GitHub | `project-expert init github owner/repo` | `gh` |
|
|
91
|
+
| GitLab | `project-expert init gitlab group/project` | `glab` |
|
|
92
|
+
| Jira | `project-expert init jira PROJ --jira-url URL` | None (REST API) |
|
|
93
|
+
|
|
94
|
+
## Commands
|
|
95
|
+
|
|
96
|
+
### `project-expert init <platform> <target>`
|
|
97
|
+
|
|
98
|
+
Bootstrap a knowledge base. Creates `.project-expert/` config, `entries/`, and belief store.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
project-expert init github owner/repo --domain "Payment platform"
|
|
102
|
+
project-expert init gitlab group/project --domain "CI/CD infrastructure"
|
|
103
|
+
project-expert init jira MYPROJ --jira-url https://myco.atlassian.net
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### `project-expert scan`
|
|
107
|
+
|
|
108
|
+
Fetch issues and produce an LLM-powered overview. Populates the topic queue with issues, epics, and milestones worth exploring.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
project-expert scan
|
|
112
|
+
project-expert scan --limit 200 # fetch more issues
|
|
113
|
+
project-expert scan --labels bug,critical # filter by labels
|
|
114
|
+
project-expert scan --state closed # scan closed issues
|
|
115
|
+
project-expert scan --jql "project=X AND priority=High" # Jira JQL
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### `project-expert explore`
|
|
119
|
+
|
|
120
|
+
Process the next topic in the queue. Fetches the full issue (with comments), runs deep analysis, creates an entry, and discovers follow-up topics.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
project-expert explore # next pending topic
|
|
124
|
+
project-expert explore --pick 2 # pick topic #2
|
|
125
|
+
project-expert explore --pick 1,3,8 # pick multiple (indices resolved before any are consumed)
|
|
126
|
+
project-expert explore --skip # skip current topic
|
|
127
|
+
project-expert explore --loop 10 # continuously explore up to 10 topics
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `project-expert topics`
|
|
131
|
+
|
|
132
|
+
View the exploration queue.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
project-expert topics # pending only
|
|
136
|
+
project-expert topics --all # include done and skipped
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `project-expert propose-beliefs`
|
|
140
|
+
|
|
141
|
+
Extract candidate beliefs from exploration entries.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
project-expert propose-beliefs
|
|
145
|
+
project-expert propose-beliefs --batch-size 10
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Output goes to `proposed-beliefs.md`. Each proposal is marked `[ACCEPT]` or `[REJECT]` — review and flip as needed, then import.
|
|
149
|
+
|
|
150
|
+
### `project-expert accept-beliefs`
|
|
151
|
+
|
|
152
|
+
Import accepted proposals into `beliefs.md` or `reasons.db`.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
project-expert accept-beliefs
|
|
156
|
+
project-expert accept-beliefs --file my-proposals.md
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### `project-expert status`
|
|
160
|
+
|
|
161
|
+
Dashboard showing platform, entries, beliefs, topic queue, and cached issues.
|
|
162
|
+
|
|
163
|
+
## Global Options
|
|
164
|
+
|
|
165
|
+
| Option | Description |
|
|
166
|
+
|--------|-------------|
|
|
167
|
+
| `--model`, `-m` | Model to use: `claude` or `gemini` (default: claude) |
|
|
168
|
+
| `--quiet`, `-q` | Suppress explanation output to stdout |
|
|
169
|
+
| `--timeout`, `-t` | LLM timeout in seconds (default: 300) |
|
|
170
|
+
| `--version` | Show version |
|
|
171
|
+
|
|
172
|
+
## Project Layout
|
|
173
|
+
|
|
174
|
+
After `init`, the working directory gets:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
.project-expert/
|
|
178
|
+
├── config.json # platform, repo/project, domain
|
|
179
|
+
├── topics.json # exploration queue
|
|
180
|
+
└── issues-cache.json # cached issue data from last scan
|
|
181
|
+
|
|
182
|
+
entries/ # dated exploration entries
|
|
183
|
+
├── 2026/04/09/
|
|
184
|
+
│ ├── scan-owner-repo.md
|
|
185
|
+
│ └── explore-GH-42.md
|
|
186
|
+
|
|
187
|
+
beliefs.md # belief registry
|
|
188
|
+
proposed-beliefs.md # proposals awaiting review
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Supported Models
|
|
192
|
+
|
|
193
|
+
| Name | CLI Command | Notes |
|
|
194
|
+
|------|-------------|-------|
|
|
195
|
+
| `claude` | `claude -p` | Default. Requires [Claude Code](https://claude.com/claude-code) |
|
|
196
|
+
| `gemini` | `gemini -p ""` | Requires Gemini CLI |
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# project-expert
|
|
2
|
+
|
|
3
|
+
Deep project analysis through belief networks. Systematically scans issue trackers (GitHub, GitLab, Jira), extracts factual beliefs about project state, builds dependency networks, and surfaces risks that status meetings, dashboards, and individual issue views miss.
|
|
4
|
+
|
|
5
|
+
**What it finds:** Not just overdue tickets, but structural project risks — overloaded teams with no recent closures, epics with hidden blockers, milestones at risk from upstream dependencies, and patterns across issues that only become visible when you build a theory of the project and reason over it.
|
|
6
|
+
|
|
7
|
+
**How it works:** project-expert fetches issues from your tracker, runs them through an LLM for structured analysis, extracts factual claims into a reason maintenance system, and derives logical consequences across the belief network — surfacing the issues that matter most.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
uv tool install git+https://github.com/benthomasson/ftl-project-expert
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Prerequisites — these CLIs must be on your PATH:
|
|
16
|
+
|
|
17
|
+
- [`entry`](https://github.com/benthomasson/entry) — chronological entry creation
|
|
18
|
+
- [`beliefs`](https://github.com/benthomasson/beliefs) or [`reasons`](https://github.com/benthomasson/reasons) — belief registry management
|
|
19
|
+
- `claude` or `gemini` — at least one LLM CLI
|
|
20
|
+
|
|
21
|
+
Platform CLIs (install whichever you need):
|
|
22
|
+
|
|
23
|
+
- [`gh`](https://cli.github.com) — GitHub CLI
|
|
24
|
+
- [`glab`](https://gitlab.com/gitlab-org/cli) — GitLab CLI
|
|
25
|
+
- For Jira: set `JIRA_URL`, `JIRA_USER`, `JIRA_TOKEN` env vars
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 1. Point project-expert at an issue tracker
|
|
31
|
+
project-expert init github owner/repo --domain "Payment platform"
|
|
32
|
+
|
|
33
|
+
# 2. Scan issues for an overview
|
|
34
|
+
project-expert scan
|
|
35
|
+
|
|
36
|
+
# 3. Explore topics one at a time
|
|
37
|
+
project-expert explore # next topic
|
|
38
|
+
project-expert explore --pick 3 # specific topic
|
|
39
|
+
project-expert explore --pick 1,3,8 # multiple (stable indices)
|
|
40
|
+
project-expert explore --skip # skip and move on
|
|
41
|
+
|
|
42
|
+
# 4. Extract beliefs from exploration entries
|
|
43
|
+
project-expert propose-beliefs
|
|
44
|
+
# Review proposed-beliefs.md — mark entries ACCEPT or REJECT
|
|
45
|
+
project-expert accept-beliefs
|
|
46
|
+
|
|
47
|
+
# 5. Check progress
|
|
48
|
+
project-expert status
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## How It Works
|
|
52
|
+
|
|
53
|
+
project-expert follows a **scan → explore → distill → reason** pipeline:
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
scan Fetch issues → LLM analysis → topic queue
|
|
57
|
+
│
|
|
58
|
+
▼
|
|
59
|
+
explore Pop one topic, fetch full issue, analyze deeply
|
|
60
|
+
│ ├── issue Single issue deep-dive
|
|
61
|
+
│ ├── epic Epic with children/blockers
|
|
62
|
+
│ ├── milestone Milestone risk assessment
|
|
63
|
+
│ └── general Cross-cutting analysis
|
|
64
|
+
│
|
|
65
|
+
▼
|
|
66
|
+
propose-beliefs Batch-extract factual claims from entries
|
|
67
|
+
│
|
|
68
|
+
▼
|
|
69
|
+
accept-beliefs Import reviewed claims into beliefs.md / reasons.db
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Each exploration creates a dated entry in `entries/` and may generate new topics, so the queue grows organically as you learn.
|
|
73
|
+
|
|
74
|
+
## Supported Platforms
|
|
75
|
+
|
|
76
|
+
| Platform | Init Command | CLI Required |
|
|
77
|
+
|----------|-------------|-------------|
|
|
78
|
+
| GitHub | `project-expert init github owner/repo` | `gh` |
|
|
79
|
+
| GitLab | `project-expert init gitlab group/project` | `glab` |
|
|
80
|
+
| Jira | `project-expert init jira PROJ --jira-url URL` | None (REST API) |
|
|
81
|
+
|
|
82
|
+
## Commands
|
|
83
|
+
|
|
84
|
+
### `project-expert init <platform> <target>`
|
|
85
|
+
|
|
86
|
+
Bootstrap a knowledge base. Creates `.project-expert/` config, `entries/`, and belief store.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
project-expert init github owner/repo --domain "Payment platform"
|
|
90
|
+
project-expert init gitlab group/project --domain "CI/CD infrastructure"
|
|
91
|
+
project-expert init jira MYPROJ --jira-url https://myco.atlassian.net
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### `project-expert scan`
|
|
95
|
+
|
|
96
|
+
Fetch issues and produce an LLM-powered overview. Populates the topic queue with issues, epics, and milestones worth exploring.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
project-expert scan
|
|
100
|
+
project-expert scan --limit 200 # fetch more issues
|
|
101
|
+
project-expert scan --labels bug,critical # filter by labels
|
|
102
|
+
project-expert scan --state closed # scan closed issues
|
|
103
|
+
project-expert scan --jql "project=X AND priority=High" # Jira JQL
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### `project-expert explore`
|
|
107
|
+
|
|
108
|
+
Process the next topic in the queue. Fetches the full issue (with comments), runs deep analysis, creates an entry, and discovers follow-up topics.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
project-expert explore # next pending topic
|
|
112
|
+
project-expert explore --pick 2 # pick topic #2
|
|
113
|
+
project-expert explore --pick 1,3,8 # pick multiple (indices resolved before any are consumed)
|
|
114
|
+
project-expert explore --skip # skip current topic
|
|
115
|
+
project-expert explore --loop 10 # continuously explore up to 10 topics
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### `project-expert topics`
|
|
119
|
+
|
|
120
|
+
View the exploration queue.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
project-expert topics # pending only
|
|
124
|
+
project-expert topics --all # include done and skipped
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### `project-expert propose-beliefs`
|
|
128
|
+
|
|
129
|
+
Extract candidate beliefs from exploration entries.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
project-expert propose-beliefs
|
|
133
|
+
project-expert propose-beliefs --batch-size 10
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Output goes to `proposed-beliefs.md`. Each proposal is marked `[ACCEPT]` or `[REJECT]` — review and flip as needed, then import.
|
|
137
|
+
|
|
138
|
+
### `project-expert accept-beliefs`
|
|
139
|
+
|
|
140
|
+
Import accepted proposals into `beliefs.md` or `reasons.db`.
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
project-expert accept-beliefs
|
|
144
|
+
project-expert accept-beliefs --file my-proposals.md
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### `project-expert status`
|
|
148
|
+
|
|
149
|
+
Dashboard showing platform, entries, beliefs, topic queue, and cached issues.
|
|
150
|
+
|
|
151
|
+
## Global Options
|
|
152
|
+
|
|
153
|
+
| Option | Description |
|
|
154
|
+
|--------|-------------|
|
|
155
|
+
| `--model`, `-m` | Model to use: `claude` or `gemini` (default: claude) |
|
|
156
|
+
| `--quiet`, `-q` | Suppress explanation output to stdout |
|
|
157
|
+
| `--timeout`, `-t` | LLM timeout in seconds (default: 300) |
|
|
158
|
+
| `--version` | Show version |
|
|
159
|
+
|
|
160
|
+
## Project Layout
|
|
161
|
+
|
|
162
|
+
After `init`, the working directory gets:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
.project-expert/
|
|
166
|
+
├── config.json # platform, repo/project, domain
|
|
167
|
+
├── topics.json # exploration queue
|
|
168
|
+
└── issues-cache.json # cached issue data from last scan
|
|
169
|
+
|
|
170
|
+
entries/ # dated exploration entries
|
|
171
|
+
├── 2026/04/09/
|
|
172
|
+
│ ├── scan-owner-repo.md
|
|
173
|
+
│ └── explore-GH-42.md
|
|
174
|
+
|
|
175
|
+
beliefs.md # belief registry
|
|
176
|
+
proposed-beliefs.md # proposals awaiting review
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Supported Models
|
|
180
|
+
|
|
181
|
+
| Name | CLI Command | Notes |
|
|
182
|
+
|------|-------------|-------|
|
|
183
|
+
| `claude` | `claude -p` | Default. Requires [Claude Code](https://claude.com/claude-code) |
|
|
184
|
+
| `gemini` | `gemini -p ""` | Requires Gemini CLI |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Project Expert — build expert knowledge bases from project management data."""
|