@troylar/sightline 1.177.0 → 1.182.0
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.
- package/CHANGELOG.md +62 -0
- package/README.md +1 -1
- package/dist/sightline-app.py +1 -1
- package/dist/sightline-jira-sync.py +2 -1
- package/dist/sightline.html +685 -80
- package/docs/assistant-workflow.md +17 -0
- package/docs/bundled-skills.md +1 -1
- package/docs/skills.md +5 -3
- package/package.json +1 -1
- package/skills/sightline-edit-plan/SKILL.md +2 -0
- package/skills/sightline-plan/SKILL.md +55 -0
- package/skills/sightline-plan-roadmap/SKILL.md +2 -0
- package/skills/sightline-review-plan/SKILL.md +2 -0
|
@@ -309,6 +309,23 @@ and never shows on hover cards. Anyone who can open the plan, and your assistant
|
|
|
309
309
|
advice, never authorization: it can't approve a change or lower the review level. Set it with the item's `.set`
|
|
310
310
|
action, field `aiHint`.
|
|
311
311
|
|
|
312
|
+
### An outcome's priority
|
|
313
|
+
|
|
314
|
+
`outcome.set` {id, field: class, why or reconsider, value, prev} sets an outcome's priority: `class` is `rock`
|
|
315
|
+
(committed), `pebble` (supports a commitment), `sand` (if there's room) or blank, and `why` (why it matters) and
|
|
316
|
+
`reconsider` (when to reconsider it) are one line each, up to 300 characters. A change to any of them always waits
|
|
317
|
+
for a person, at every review level: the team's priority and its reason are a person's call. A plan with a class or
|
|
318
|
+
either line needs this version or later: older copies open it read-only.
|
|
319
|
+
|
|
320
|
+
### The work order
|
|
321
|
+
|
|
322
|
+
`initiative.order` {ids} sets the team's work order: every initiative id, in the order the team will take them, and
|
|
323
|
+
`[]` clears it. The forecast follows it when people are busy: ordered work gets people first, a nested initiative
|
|
324
|
+
takes its nearest listed holder's place, and unordered work follows in workstream order, then by start. What an item
|
|
325
|
+
waits for still comes first, and Jira-dated initiatives keep their sprint, so they can't be in the order. It always
|
|
326
|
+
waits for a person, at every review level. The export has `planning.workOrder` and each initiative's `workOrder`
|
|
327
|
+
place, from 1. A plan with a work order needs this version or later: older copies open it read-only.
|
|
328
|
+
|
|
312
329
|
### Workstream actions
|
|
313
330
|
|
|
314
331
|
`workstream.set` {id, field: note, color, from or until, value, prev} and `workstream.move` {id, index} change a
|
package/docs/bundled-skills.md
CHANGED
|
@@ -42,5 +42,5 @@ changes made after that build. To get newer skills, get the newer **sightline.ht
|
|
|
42
42
|
compare or install its collection. There is no background download or automatic overwrite.
|
|
43
43
|
|
|
44
44
|
A running assistant still needs access to the plan's [private context folder](assistant-workflow.md). Installing
|
|
45
|
-
skills doesn't connect a model or change the in-app companion's protocol. See [the
|
|
45
|
+
skills doesn't connect a model or change the in-app companion's protocol. See [the planning skills](skills.md)
|
|
46
46
|
for ordinary-language requests you can start with.
|
package/docs/skills.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# Planning skills that start where your team is
|
|
2
2
|
|
|
3
|
-
A skill is reusable instructions for an AI assistant.
|
|
4
|
-
|
|
3
|
+
A skill is reusable instructions for an AI assistant. Start with **sightline-plan**, the one way in: paste
|
|
4
|
+
notes, emails, bug reports, ideas, a leader's priorities or a question, and it works out where each piece
|
|
5
|
+
belongs and prepares changes for you to review. It hands off to the specialist skills below when a job needs them.
|
|
5
6
|
[Back to the tour](../README.md#documentation).
|
|
6
7
|
|
|
7
8
|
## Start with your normal conversation
|
|
@@ -17,7 +18,7 @@ node bin/sightline.js skills --to ../planning-skills
|
|
|
17
18
|
This works without a public npm package. Builds 1.95.0 and later also offer
|
|
18
19
|
[skill deployment from the HTML](bundled-skills.md); check [availability](availability.md) first.
|
|
19
20
|
|
|
20
|
-
You do not need to learn
|
|
21
|
+
You do not need to learn any skill names to have a useful planning conversation. Say what you need:
|
|
21
22
|
|
|
22
23
|
> Read the current context in my private assistant folder. Organize these notes against existing work,
|
|
23
24
|
> leave unknown owners unknown, and show the three decisions that matter most. Prepare only the changes I request.
|
|
@@ -30,6 +31,7 @@ Sightline tab writing its outputs. [Connect the folder and complete a session](a
|
|
|
30
31
|
|
|
31
32
|
| Skill | Input | Result |
|
|
32
33
|
| --- | --- | --- |
|
|
34
|
+
| [sightline-plan](../skills/sightline-plan/SKILL.md) | Anything: notes, emails, bug reports, ideas, priorities, questions | Each piece sorted and answered; changes prepared for review; grooming agendas and Jira issue drafts in the reply |
|
|
33
35
|
| [sightline-plan-roadmap](../skills/sightline-plan-roadmap/SKILL.md) | Goals, notes and an explicit horizon | Proposed outcomes, placement and timing; unknowns remain unknown |
|
|
34
36
|
| [sightline-meeting-to-plan](../skills/sightline-meeting-to-plan/SKILL.md) | Notes you supply | Agreed changes, ideas and open decisions kept distinguishable |
|
|
35
37
|
| [sightline-edit-plan](../skills/sightline-edit-plan/SKILL.md) | A targeted change | Small amendments with stable IDs and current-value preconditions |
|
package/package.json
CHANGED
|
@@ -24,6 +24,8 @@ Make the smallest coherent change that satisfies the request.
|
|
|
24
24
|
- Check jiraLinked and datesFromTasks before proposing dates or status. Jira facts need a permitted Jira proposal; derived dates cannot be independently edited.
|
|
25
25
|
- Keep logically dependent operations in one atomic change. Separate unrelated changes so the person can accept one without another.
|
|
26
26
|
- For starts-after links, deletions, workstreams, people (role, allocation, workstream), milestones and what they're done after, gates, risks and decisions, holidays and time off, effort estimates (only numbers the person gives you) and what an initiative delivers, when people join and leave, how someone's time splits across workstreams, the support reserve, a workstream's note, color, dates and order (`workstream.set`, `workstream.move`; `workstream.del` only for an empty workstream, and it always waits for review; `workstream.reid {lane, id}` when a workstream's id no longer matches what it is, which also always waits for review: use the ids under `planning.workstreams`, and treat `was` as former ids, never as new ones), the skills catalog (`skill.add`, `skill.rename`, `skill.remove`, refused while a skill is in use), people's `skills` and work's `needs`, milestone stories, gate descriptions, meeting notes and `aiHint`, use the guide's action ops (`{op:"action", action, args}`) with the arguments listed under `actions`. Give every new item your own unique id, and put ops that depend on each other in one change, in order.
|
|
27
|
+
- An outcome's priority (`class`: rock, pebble or sand; `why`; `reconsider`) is set with `outcome.set`, one line each, and always waits for a person at every review level. Change it only when the person asks.
|
|
28
|
+
- The team's work order (`planning.workOrder`) is set with `initiative.order {ids}`: every initiative id, in order (`[]` clears it). Only when the person asks; it always waits for a person at every review level. Jira-dated initiatives aren't in it.
|
|
27
29
|
- When the order of work is known but not its dates, add tasks with `after` (the tasks each starts after) and no `start`, and mark lengths you estimated with `rough: true`. To line up a task already in the plan, use `task.move` with `start: "after"`, never a delete and re-add: it keeps the task's ID and links. A task with `rough: false` in the context is set with `prev: false`.
|
|
28
30
|
- For broad requests such as “move everything back,” show scope and affected IDs before generating changes. If something is in neither the guide's operations nor its actions, describe the manual UI path.
|
|
29
31
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sightline-plan
|
|
3
|
+
description: The one way in to Sightline. Takes anything (notes, emails, bug reports, ideas, a leader's priorities, questions) and works out where each piece belongs, proposing changes for a person to review. Use it first; it hands off to the other Sightline skills.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## What this is
|
|
7
|
+
|
|
8
|
+
People paste whatever they have: meeting notes, a forwarded email, a bug report, an idea, "the CIO wants SSO first", or a question like "can we take this on?". They should never have to know how Sightline is organized. You sort it out, answer what was asked, and prepare changes that a person reviews in Sightline. Nothing you write changes the plan by itself.
|
|
9
|
+
|
|
10
|
+
Read the connected context first, exactly as `sightline-meeting-to-plan` describes (fresh context, matching plan ID and revision, coverage, what's omitted). When you write changes, follow its "Write proposals only when requested" rules. Pasting things in to be recorded counts as the request to prepare proposals; a question on its own doesn't.
|
|
11
|
+
|
|
12
|
+
## Sort every piece
|
|
13
|
+
|
|
14
|
+
Split the input into separate observations. Each one gets exactly one of these, and your reply says which:
|
|
15
|
+
|
|
16
|
+
- **A question** about the plan: answer it (see "Answering questions"). Asking never changes the plan.
|
|
17
|
+
- **Something heard** (a request, idea, complaint, bug, process gap): compare what's affected and what's wanted with the open and closed captures and the Jira items in the context, not just titles. Then propose one of: `outcome.raiseAgain` on the capture that clearly covers it; a new capture (`outcome.add` with `capture`); or, when unsure, a new capture and a note naming the capture it may repeat. One observation per capture, one line, with who raised it (a person or group already in the plan, or a role like "support", never an outside person's name or contact details), when, and where it came from. Never paste the email or transcript into the plan.
|
|
18
|
+
- **A decision or a risk** that was agreed or raised: `decision.add` or `risk.add`.
|
|
19
|
+
- **A priority someone stated** ("the VP wants Dashboard first"): record it as a request capture, with who said it, their role then, the date, and the reason, linked by name to the work it's about. Never change an outcome's class or the work order to match it. If the team might act on it, propose the change separately, as its own change, so a person can accept the request and decide the order on its own. Both always wait for review.
|
|
20
|
+
- **A plan edit someone asked for**: follow `sightline-edit-plan`. Roadmap goals: `sightline-plan-roadmap`. Unsorted Jira work: `sightline-sort-jira`. Guidance for a workstream: `sightline-planning-guide`. A summary for an audience: `sightline-status`. A review for gaps and contradictions: `sightline-review-plan`.
|
|
21
|
+
- **Not enough to act on** ("notifications are broken"): keep it separate and ask the one question that would change what happens next. Don't guess, and don't merge it with something that only sounds similar.
|
|
22
|
+
|
|
23
|
+
A forwarded copy of a report is not another report. The same email pasted twice is one report. When you can't tell whether two reports come from different people, say "two mentions", not "two people".
|
|
24
|
+
|
|
25
|
+
## The reply
|
|
26
|
+
|
|
27
|
+
Lead with what you understood, then what you prepared, then what needs a person:
|
|
28
|
+
|
|
29
|
+
> Seven topics. Four connect to work you already have; three are new.
|
|
30
|
+
> **CSV exports**: one more report from support on the existing request (ABC-42). The forwarded copy isn't counted twice.
|
|
31
|
+
> **SSO and Dashboard**: the CIO asked for SSO first; a Dashboard date was promised to sales. I recorded both; the order is unchanged and waits for your decision.
|
|
32
|
+
> **"Notifications are broken"**: kept aside. Customer notifications or release alerts?
|
|
33
|
+
> Ready to review in Sightline. Nothing has been applied.
|
|
34
|
+
|
|
35
|
+
Use the team's words, not Sightline's internal ones: say "request", "work order", "what matters most", not field or action names. Give no confidence percentages; give the reason a match is uncertain.
|
|
36
|
+
|
|
37
|
+
## Answering questions
|
|
38
|
+
|
|
39
|
+
Answer from the context only, and say what it doesn't cover.
|
|
40
|
+
|
|
41
|
+
- **What should I work on?** Go by the team's work order, then each outcome's class (rock = committed, pebble = supports a commitment, sand = if there's room) and its "why it matters". Name the next ready item for that person and what it serves. If the order is empty, say so instead of inventing one.
|
|
42
|
+
- **Can we take this on? / How are we against capacity?** Use Sightline's forecast and capacity figures, never your own schedule. Missing effort means "can't tell yet: it has no estimate", and name what estimate would answer it. Say what would wait.
|
|
43
|
+
- **Why is X above Y?** Quote the recorded reasons, who set them and when. If there's no recorded reason, say so.
|
|
44
|
+
|
|
45
|
+
## Prep our grooming
|
|
46
|
+
|
|
47
|
+
Return a short agenda that starts with decisions, not a tour of the backlog: at most five topics (fewer is fine), each with why it's on the agenda, the evidence, and the result to aim for, with minutes that fit the meeting's length (assume 30 minutes when unknown). Typical topics: a stated priority that conflicts with the work order or a promise; work near the top of the order with no estimate; requests that need one clarifying question; items that need a tracker check. End with how many other new requests stay outside today's agenda. Preparing an agenda changes nothing in the plan.
|
|
48
|
+
|
|
49
|
+
## Does it need a Jira issue?
|
|
50
|
+
|
|
51
|
+
Work near the top of the order with no Jira link needs a tracker check, not automatically a new issue: say whether it has linked Jira work, may belong in an existing issue, or has no known link. When an issue is needed, put a draft in your reply only (summary, problem, expected and actual behavior, steps to reproduce, acceptance criteria, evidence, open questions), citing the Sightline item. Never invent requirements: missing ones are open questions. Tell the person to search Jira once more before filing. Sightline never creates issues. After filing, the person adds the key to the item.
|
|
52
|
+
|
|
53
|
+
## No file access
|
|
54
|
+
|
|
55
|
+
If you can't read or write files, work from what the person pasted from Sightline's "Copy for my assistant". Say which items it included and ask for "more about X" when a match depends on something missing. Return the proposals as one JSON block in the same version 1 envelope, so the person can choose "Paste proposed changes" in Sightline. Sightline checks it again before anything is applied.
|
|
@@ -21,6 +21,8 @@ Translate the requested goals into outcomes the team can discuss.
|
|
|
21
21
|
- Match existing outcomes by stable ID before proposing additions. Prefer an outcome describing a user or business result, with brief customer wording; distinguish a result from the tasks needed to achieve it.
|
|
22
22
|
- Use the saved projectGuide and actual workstream IDs to suggest placement. Explain uncertain placements. Leave owners and timing unknown when the user has not supplied them; an idea can stay at idea stage without a date.
|
|
23
23
|
- Preserve outcomes outside the requested window and call out any relevant ones. Calendar targets express planning intent; they do not establish team capacity or a delivery commitment.
|
|
24
|
+
- An outcome's priority is the team's call. Propose a class (`rock` committed, `pebble` supports a commitment, `sand` if there's room) only when the person asks, always with a one-line `why`, through `outcome.set`; it always waits for a person. A class is importance, not size.
|
|
25
|
+
- When the person asks for a work order, propose `initiative.order` with committed work first, and say why; it always waits for a person.
|
|
24
26
|
- Propose only the changes the person requested. Put optional extra work in a separate suggestion, not in the proposal batch.
|
|
25
27
|
|
|
26
28
|
Report the proposed quarter-by-quarter outcomes, material tradeoffs and the one missing decision that matters most. If a requested operation is absent from the current context guide, explain the UI step instead of inventing an operation.
|
|
@@ -25,6 +25,8 @@ Review the requested scope, or the next four explicit calendar quarters when no
|
|
|
25
25
|
- Missing or ambiguous owner, target or workstream information. Distinguish unknown from deliberately unassigned.
|
|
26
26
|
- Unsupported timing or progress claims, especially Jira-derived status or dates. State snapshot freshness and omitted Jira coverage.
|
|
27
27
|
- Dependencies, risks, capacity and decisions only where the supplied evidence supports them. The assistant view omits notes and may omit parts of the plan or Jira; do not claim to have reviewed missing data.
|
|
28
|
+
- Priority gaps: a rock (`class: "rock"`) with no target, release or date recorded, or a class with no `why`. Point them out; never reclassify an outcome, since its class is the team's call.
|
|
29
|
+
- Work order gaps: an initiative that delivers a rock but isn't in `planning.workOrder`, or sits after initiatives that only deliver sand. Point them out; never reorder, since the order is the team's call.
|
|
28
30
|
- Relevant work outside the requested quarters. Do not recommend deleting it simply because the view excludes it.
|
|
29
31
|
|
|
30
32
|
Lead with up to three material findings, naming stable IDs and the evidence behind each. End with focused next decisions. If no material issue is supported, say so and state the coverage limits. Offer proposed edits only if the person subsequently asks.
|