Expand skills UI product plan
This commit is contained in:
@@ -541,6 +541,7 @@ If importing skills:
|
|||||||
- preserve Agent Skills compatibility in presentation and export
|
- preserve Agent Skills compatibility in presentation and export
|
||||||
- preserve `skills.sh` compatibility in both import and install flows
|
- preserve `skills.sh` compatibility in both import and install flows
|
||||||
- show agent skill attachments by shortname/slug rather than noisy file paths
|
- show agent skill attachments by shortname/slug rather than noisy file paths
|
||||||
|
- treat agent skills as a dedicated agent tab, not just another subsection of configuration
|
||||||
- show current adapter-reported skills when supported
|
- show current adapter-reported skills when supported
|
||||||
- show desired package skills separately from actual adapter state
|
- show desired package skills separately from actual adapter state
|
||||||
- offer reconcile actions when the adapter supports sync
|
- offer reconcile actions when the adapter supports sync
|
||||||
@@ -570,6 +571,7 @@ If importing skills:
|
|||||||
- team subtree attach flow
|
- team subtree attach flow
|
||||||
- licensing/trust/reference warnings
|
- licensing/trust/reference warnings
|
||||||
- company skill library groundwork
|
- company skill library groundwork
|
||||||
|
- dedicated agent `Skills` tab groundwork
|
||||||
- adapter skill read/sync UI groundwork
|
- adapter skill read/sync UI groundwork
|
||||||
|
|
||||||
### Phase 4: New Export Model
|
### Phase 4: New Export Model
|
||||||
|
|||||||
@@ -42,6 +42,16 @@ Current limitations:
|
|||||||
5. The current UI is adapter-sync-oriented, not package-oriented.
|
5. The current UI is adapter-sync-oriented, not package-oriented.
|
||||||
6. Unsupported adapters degrade safely, but not elegantly.
|
6. Unsupported adapters degrade safely, but not elegantly.
|
||||||
|
|
||||||
|
## 2.1 V1 Decisions
|
||||||
|
|
||||||
|
For V1, this plan assumes the following product decisions are already made:
|
||||||
|
|
||||||
|
1. `skills.sh` compatibility is required.
|
||||||
|
2. Agent-to-skill association in `AGENTS.md` is by shortname or slug.
|
||||||
|
3. Company skills and agent skill attachments are separate concepts.
|
||||||
|
4. Agent skills should move to their own tab rather than living inside configuration.
|
||||||
|
5. Company import/export should eventually round-trip skill packages and agent skill attachments.
|
||||||
|
|
||||||
## 3. Product Principles
|
## 3. Product Principles
|
||||||
|
|
||||||
1. Skills are company assets first, agent attachments second.
|
1. Skills are company assets first, agent attachments second.
|
||||||
@@ -97,6 +107,18 @@ Agent attachments should normally reference skills by shortname or slug, for exa
|
|||||||
|
|
||||||
not by noisy relative file path.
|
not by noisy relative file path.
|
||||||
|
|
||||||
|
## 4.3 Primary user jobs
|
||||||
|
|
||||||
|
The UI should support these jobs cleanly:
|
||||||
|
|
||||||
|
1. “Show me what skills this company has.”
|
||||||
|
2. “Import a skill from GitHub or a local folder.”
|
||||||
|
3. “See whether a skill is safe, compatible, and who uses it.”
|
||||||
|
4. “Attach skills to an agent.”
|
||||||
|
5. “See whether the adapter actually has those skills.”
|
||||||
|
6. “Reconcile desired vs actual skill state.”
|
||||||
|
7. “Understand what Paperclip knows vs what the adapter knows.”
|
||||||
|
|
||||||
## 5. Core UI Surfaces
|
## 5. Core UI Surfaces
|
||||||
|
|
||||||
The product should have two primary skill surfaces.
|
The product should have two primary skill surfaces.
|
||||||
@@ -114,6 +136,27 @@ Purpose:
|
|||||||
- understand provenance and trust
|
- understand provenance and trust
|
||||||
- see which agents use which skills
|
- see which agents use which skills
|
||||||
|
|
||||||
|
#### Route
|
||||||
|
|
||||||
|
- `/companies/:companyId/skills`
|
||||||
|
|
||||||
|
#### Primary actions
|
||||||
|
|
||||||
|
- import skill
|
||||||
|
- inspect skill
|
||||||
|
- attach to agents
|
||||||
|
- detach from agents
|
||||||
|
- export selected skills later
|
||||||
|
|
||||||
|
#### Empty state
|
||||||
|
|
||||||
|
When the company has no managed skills:
|
||||||
|
|
||||||
|
- explain what skills are
|
||||||
|
- explain `skills.sh` / Agent Skills compatibility
|
||||||
|
- offer `Import from GitHub` and `Import from folder`
|
||||||
|
- optionally show adapter-discovered skills as a secondary “not managed yet” section
|
||||||
|
|
||||||
#### A. Skill library list
|
#### A. Skill library list
|
||||||
|
|
||||||
Each skill row should show:
|
Each skill row should show:
|
||||||
@@ -146,6 +189,14 @@ Suggested trust states:
|
|||||||
- assets
|
- assets
|
||||||
- scripts/executables
|
- scripts/executables
|
||||||
|
|
||||||
|
Suggested list affordances:
|
||||||
|
|
||||||
|
- search by name or slug
|
||||||
|
- filter by source
|
||||||
|
- filter by trust level
|
||||||
|
- filter by usage
|
||||||
|
- sort by name, recent import, usage count
|
||||||
|
|
||||||
#### B. Import actions
|
#### B. Import actions
|
||||||
|
|
||||||
Allow:
|
Allow:
|
||||||
@@ -159,6 +210,10 @@ Future:
|
|||||||
- install from `companies.sh`
|
- install from `companies.sh`
|
||||||
- install from `skills.sh`
|
- install from `skills.sh`
|
||||||
|
|
||||||
|
V1 requirement:
|
||||||
|
|
||||||
|
- importing from a `skills.sh`-compatible source should work without requiring a Paperclip-specific package layout
|
||||||
|
|
||||||
#### C. Skill detail drawer or page
|
#### C. Skill detail drawer or page
|
||||||
|
|
||||||
Each skill should have a detail view showing:
|
Each skill should have a detail view showing:
|
||||||
@@ -170,9 +225,34 @@ Each skill should have a detail view showing:
|
|||||||
- who uses it
|
- who uses it
|
||||||
- adapter compatibility notes
|
- adapter compatibility notes
|
||||||
|
|
||||||
### 5.2 Agent Skills panel
|
Recommended route:
|
||||||
|
|
||||||
Keep and evolve the existing `AgentDetail` skills section.
|
- `/companies/:companyId/skills/:skillId`
|
||||||
|
|
||||||
|
Recommended sections:
|
||||||
|
|
||||||
|
- Overview
|
||||||
|
- Contents
|
||||||
|
- Usage
|
||||||
|
- Source
|
||||||
|
- Trust / licensing
|
||||||
|
|
||||||
|
#### D. Usage view
|
||||||
|
|
||||||
|
Each company skill should show which agents use it.
|
||||||
|
|
||||||
|
Suggested columns:
|
||||||
|
|
||||||
|
- agent
|
||||||
|
- desired state
|
||||||
|
- actual state
|
||||||
|
- adapter
|
||||||
|
- sync mode
|
||||||
|
- last sync status
|
||||||
|
|
||||||
|
### 5.2 Agent Skills tab
|
||||||
|
|
||||||
|
Keep and evolve the existing `AgentDetail` skill sync UI, but move it out of configuration.
|
||||||
|
|
||||||
Purpose:
|
Purpose:
|
||||||
|
|
||||||
@@ -181,6 +261,42 @@ Purpose:
|
|||||||
- reconcile desired vs actual state
|
- reconcile desired vs actual state
|
||||||
- keep the association format readable and aligned with `AGENTS.md`
|
- keep the association format readable and aligned with `AGENTS.md`
|
||||||
|
|
||||||
|
#### Route
|
||||||
|
|
||||||
|
- `/agents/:agentId/skills`
|
||||||
|
|
||||||
|
#### Agent tabs
|
||||||
|
|
||||||
|
The intended agent-level tab model becomes:
|
||||||
|
|
||||||
|
- `dashboard`
|
||||||
|
- `configuration`
|
||||||
|
- `skills`
|
||||||
|
- `runs`
|
||||||
|
|
||||||
|
This is preferable to hiding skills inside configuration because:
|
||||||
|
|
||||||
|
- skills are not just adapter config
|
||||||
|
- skills need their own sync/status language
|
||||||
|
- skills are a reusable company asset, not merely one agent field
|
||||||
|
- the screen needs room for desired vs actual state, warnings, and external skill adoption
|
||||||
|
|
||||||
|
#### Tab layout
|
||||||
|
|
||||||
|
The `Skills` tab should have three stacked sections:
|
||||||
|
|
||||||
|
1. Summary
|
||||||
|
2. Managed skills
|
||||||
|
3. External / discovered skills
|
||||||
|
|
||||||
|
Summary should show:
|
||||||
|
|
||||||
|
- adapter sync support
|
||||||
|
- sync mode
|
||||||
|
- number of managed skills
|
||||||
|
- number of external skills
|
||||||
|
- drift or warning count
|
||||||
|
|
||||||
#### A. Desired skills
|
#### A. Desired skills
|
||||||
|
|
||||||
Show company-managed skills attached to the agent.
|
Show company-managed skills attached to the agent.
|
||||||
@@ -193,6 +309,13 @@ Each row should show:
|
|||||||
- source
|
- source
|
||||||
- last adapter observation if available
|
- last adapter observation if available
|
||||||
|
|
||||||
|
Each row should support:
|
||||||
|
|
||||||
|
- enable / disable
|
||||||
|
- open skill detail
|
||||||
|
- see source badge
|
||||||
|
- see sync badge
|
||||||
|
|
||||||
#### B. External or discovered skills
|
#### B. External or discovered skills
|
||||||
|
|
||||||
Show skills reported by the adapter that are not company-managed.
|
Show skills reported by the adapter that are not company-managed.
|
||||||
@@ -204,6 +327,12 @@ These should be clearly marked:
|
|||||||
- external
|
- external
|
||||||
- not managed by Paperclip
|
- not managed by Paperclip
|
||||||
|
|
||||||
|
Each external row should support:
|
||||||
|
|
||||||
|
- inspect
|
||||||
|
- adopt into company library later
|
||||||
|
- attach as managed skill later if appropriate
|
||||||
|
|
||||||
#### C. Sync controls
|
#### C. Sync controls
|
||||||
|
|
||||||
Support:
|
Support:
|
||||||
@@ -217,6 +346,12 @@ Future:
|
|||||||
- import external skill into company library
|
- import external skill into company library
|
||||||
- promote ad hoc local skill into a managed company skill
|
- promote ad hoc local skill into a managed company skill
|
||||||
|
|
||||||
|
Recommended footer actions:
|
||||||
|
|
||||||
|
- `Sync skills`
|
||||||
|
- `Reset`
|
||||||
|
- `Refresh adapter state`
|
||||||
|
|
||||||
## 6. Skill State Model In The UI
|
## 6. Skill State Model In The UI
|
||||||
|
|
||||||
Each skill attachment should have a user-facing state.
|
Each skill attachment should have a user-facing state.
|
||||||
@@ -239,6 +374,15 @@ Definitions:
|
|||||||
- `unmanaged`: adapter does not support sync, Paperclip only tracks desired state
|
- `unmanaged`: adapter does not support sync, Paperclip only tracks desired state
|
||||||
- `unknown`: adapter read failed or state cannot be trusted
|
- `unknown`: adapter read failed or state cannot be trusted
|
||||||
|
|
||||||
|
Suggested badge copy:
|
||||||
|
|
||||||
|
- `In sync`
|
||||||
|
- `Needs sync`
|
||||||
|
- `External`
|
||||||
|
- `Drifted`
|
||||||
|
- `Unmanaged`
|
||||||
|
- `Unknown`
|
||||||
|
|
||||||
## 7. Adapter Presentation Rules
|
## 7. Adapter Presentation Rules
|
||||||
|
|
||||||
The UI should not describe all adapters the same way.
|
The UI should not describe all adapters the same way.
|
||||||
@@ -280,23 +424,43 @@ This state should still allow:
|
|||||||
- attaching company skills to the agent as desired state
|
- attaching company skills to the agent as desired state
|
||||||
- export/import of those desired attachments
|
- export/import of those desired attachments
|
||||||
|
|
||||||
|
## 7.4 Read-only adapters
|
||||||
|
|
||||||
|
Some adapters may be able to list skills but not mutate them.
|
||||||
|
|
||||||
|
Language:
|
||||||
|
|
||||||
|
- Paperclip can see adapter skills
|
||||||
|
- this adapter does not support applying changes
|
||||||
|
- desired state can be tracked, but reconciliation is manual
|
||||||
|
|
||||||
## 8. Information Architecture
|
## 8. Information Architecture
|
||||||
|
|
||||||
Recommended navigation:
|
Recommended navigation:
|
||||||
|
|
||||||
- company nav adds `Skills`
|
- company nav adds `Skills`
|
||||||
- agent detail keeps `Skills` inside configuration for now
|
- agent detail adds `Skills` as its own tab
|
||||||
|
- company skill detail gets its own route when the company library ships
|
||||||
Later, if the skill system grows:
|
|
||||||
|
|
||||||
- company-level `Skills` page
|
|
||||||
- optional skill detail route
|
|
||||||
- optional skill usage graph view
|
|
||||||
|
|
||||||
Recommended separation:
|
Recommended separation:
|
||||||
|
|
||||||
- Company Skills page answers: “What skills do we have?”
|
- Company Skills page answers: “What skills do we have?”
|
||||||
- Agent Skills panel answers: “What does this agent use, and is it synced?”
|
- Agent Skills tab answers: “What does this agent use, and is it synced?”
|
||||||
|
|
||||||
|
## 8.1 Proposed route map
|
||||||
|
|
||||||
|
- `/companies/:companyId/skills`
|
||||||
|
- `/companies/:companyId/skills/:skillId`
|
||||||
|
- `/agents/:agentId/skills`
|
||||||
|
|
||||||
|
## 8.2 Nav and discovery
|
||||||
|
|
||||||
|
Recommended entry points:
|
||||||
|
|
||||||
|
- company sidebar: `Skills`
|
||||||
|
- agent page tabs: `Skills`
|
||||||
|
- company import preview: link imported skills to company skills page later
|
||||||
|
- agent skills rows: link to company skill detail
|
||||||
|
|
||||||
## 9. Import / Export Integration
|
## 9. Import / Export Integration
|
||||||
|
|
||||||
@@ -316,6 +480,35 @@ Export behavior:
|
|||||||
- `.paperclip.yaml` may add Paperclip-specific skill fidelity later if needed, but should not be required for ordinary agent-to-skill association
|
- `.paperclip.yaml` may add Paperclip-specific skill fidelity later if needed, but should not be required for ordinary agent-to-skill association
|
||||||
- adapter-only external skills should not be silently exported as managed company skills
|
- adapter-only external skills should not be silently exported as managed company skills
|
||||||
|
|
||||||
|
## 9.1 Import workflows
|
||||||
|
|
||||||
|
V1 workflows should support:
|
||||||
|
|
||||||
|
1. import one or more skills from a local folder
|
||||||
|
2. import one or more skills from a GitHub repo
|
||||||
|
3. import a company package that contains skills
|
||||||
|
4. attach imported skills to one or more agents
|
||||||
|
|
||||||
|
Import preview for skills should show:
|
||||||
|
|
||||||
|
- skills discovered
|
||||||
|
- source and pinning
|
||||||
|
- trust level
|
||||||
|
- licensing warnings
|
||||||
|
- whether an existing company skill will be created, updated, or skipped
|
||||||
|
|
||||||
|
## 9.2 Export workflows
|
||||||
|
|
||||||
|
V1 should support:
|
||||||
|
|
||||||
|
1. export a company with managed skills included when selected
|
||||||
|
2. export an agent whose `AGENTS.md` contains shortname skill associations
|
||||||
|
3. preserve Agent Skills compatibility for each `SKILL.md`
|
||||||
|
|
||||||
|
Out of scope for V1:
|
||||||
|
|
||||||
|
- exporting adapter-only external skills as managed packages automatically
|
||||||
|
|
||||||
## 10. Data And API Shape
|
## 10. Data And API Shape
|
||||||
|
|
||||||
This plan implies a clean split in backend concepts.
|
This plan implies a clean split in backend concepts.
|
||||||
@@ -351,13 +544,127 @@ Adapter reads should return:
|
|||||||
|
|
||||||
This already exists in rough form and should be the basis for the UI.
|
This already exists in rough form and should be the basis for the UI.
|
||||||
|
|
||||||
## 11. UI Phases
|
### 10.4 UI-facing API needs
|
||||||
|
|
||||||
|
The complete UI implies these API surfaces:
|
||||||
|
|
||||||
|
- list company-managed skills
|
||||||
|
- import company skills from path/URL/GitHub
|
||||||
|
- get one company skill detail
|
||||||
|
- list agents using a given skill
|
||||||
|
- attach/detach company skills for an agent
|
||||||
|
- list adapter sync snapshot for an agent
|
||||||
|
- apply desired skills for an agent
|
||||||
|
|
||||||
|
Existing agent-level skill sync APIs can remain the base for the agent tab.
|
||||||
|
The company-level library APIs still need to be designed and implemented.
|
||||||
|
|
||||||
|
## 11. Page-by-page UX
|
||||||
|
|
||||||
|
### 11.1 Company Skills list page
|
||||||
|
|
||||||
|
Header:
|
||||||
|
|
||||||
|
- title
|
||||||
|
- short explanation of compatibility with Agent Skills / `skills.sh`
|
||||||
|
- import button
|
||||||
|
|
||||||
|
Body:
|
||||||
|
|
||||||
|
- filters
|
||||||
|
- skill table or cards
|
||||||
|
- empty state when none
|
||||||
|
|
||||||
|
Secondary content:
|
||||||
|
|
||||||
|
- warnings panel for untrusted or incompatible skills
|
||||||
|
|
||||||
|
### 11.2 Company Skill detail page
|
||||||
|
|
||||||
|
Header:
|
||||||
|
|
||||||
|
- skill name
|
||||||
|
- shortname
|
||||||
|
- source badge
|
||||||
|
- trust badge
|
||||||
|
- compatibility badge
|
||||||
|
|
||||||
|
Sections:
|
||||||
|
|
||||||
|
- rendered `SKILL.md`
|
||||||
|
- files and references
|
||||||
|
- usage by agents
|
||||||
|
- source / provenance
|
||||||
|
- trust and licensing warnings
|
||||||
|
|
||||||
|
Actions:
|
||||||
|
|
||||||
|
- attach to agent
|
||||||
|
- remove from company library later
|
||||||
|
- export later
|
||||||
|
|
||||||
|
### 11.3 Agent Skills tab
|
||||||
|
|
||||||
|
Header:
|
||||||
|
|
||||||
|
- adapter support summary
|
||||||
|
- sync mode
|
||||||
|
- refresh and sync actions
|
||||||
|
|
||||||
|
Body:
|
||||||
|
|
||||||
|
- managed skills list
|
||||||
|
- external/discovered skills list
|
||||||
|
- warnings / unsupported state block
|
||||||
|
|
||||||
|
## 12. States And Empty Cases
|
||||||
|
|
||||||
|
### 12.1 Company Skills page
|
||||||
|
|
||||||
|
States:
|
||||||
|
|
||||||
|
- empty
|
||||||
|
- loading
|
||||||
|
- loaded
|
||||||
|
- import in progress
|
||||||
|
- import failed
|
||||||
|
|
||||||
|
### 12.2 Company Skill detail
|
||||||
|
|
||||||
|
States:
|
||||||
|
|
||||||
|
- loading
|
||||||
|
- not found
|
||||||
|
- incompatible
|
||||||
|
- loaded
|
||||||
|
|
||||||
|
### 12.3 Agent Skills tab
|
||||||
|
|
||||||
|
States:
|
||||||
|
|
||||||
|
- loading snapshot
|
||||||
|
- unsupported adapter
|
||||||
|
- read-only adapter
|
||||||
|
- sync-capable adapter
|
||||||
|
- sync failed
|
||||||
|
- stale draft
|
||||||
|
|
||||||
|
## 13. Permissions And Governance
|
||||||
|
|
||||||
|
Suggested V1 policy:
|
||||||
|
|
||||||
|
- board users can manage company skills
|
||||||
|
- board users can attach skills to agents
|
||||||
|
- agents themselves do not mutate company skill library by default
|
||||||
|
- later, certain agents may get scoped permissions for skill attachment or sync
|
||||||
|
|
||||||
|
## 14. UI Phases
|
||||||
|
|
||||||
### Phase A: Stabilize current agent skill sync UI
|
### Phase A: Stabilize current agent skill sync UI
|
||||||
|
|
||||||
Goals:
|
Goals:
|
||||||
|
|
||||||
- keep current `AgentDetail` panel
|
- move skills to an `AgentDetail` tab
|
||||||
- improve status language
|
- improve status language
|
||||||
- support desired-only state even on unsupported adapters
|
- support desired-only state even on unsupported adapters
|
||||||
- polish copy for persistent vs ephemeral adapters
|
- polish copy for persistent vs ephemeral adapters
|
||||||
@@ -370,6 +677,7 @@ Goals:
|
|||||||
- import from GitHub/local folder
|
- import from GitHub/local folder
|
||||||
- basic detail view
|
- basic detail view
|
||||||
- usage counts by agent
|
- usage counts by agent
|
||||||
|
- `skills.sh`-compatible import path
|
||||||
|
|
||||||
### Phase C: Connect skills to portability
|
### Phase C: Connect skills to portability
|
||||||
|
|
||||||
@@ -377,7 +685,7 @@ Goals:
|
|||||||
|
|
||||||
- importing company packages creates company skills
|
- importing company packages creates company skills
|
||||||
- exporting selected skills works cleanly
|
- exporting selected skills works cleanly
|
||||||
- agent attachments round-trip through `.paperclip.yaml`
|
- agent attachments round-trip primarily through `AGENTS.md` shortnames
|
||||||
|
|
||||||
### Phase D: External skill adoption flow
|
### Phase D: External skill adoption flow
|
||||||
|
|
||||||
@@ -395,18 +703,19 @@ Goals:
|
|||||||
- drift resolution actions
|
- drift resolution actions
|
||||||
- multi-agent skill usage and sync reporting
|
- multi-agent skill usage and sync reporting
|
||||||
|
|
||||||
## 12. Design Risks
|
## 15. Design Risks
|
||||||
|
|
||||||
1. Overloading the agent page with package management will make the feature confusing.
|
1. Overloading the agent page with package management will make the feature confusing.
|
||||||
2. Treating unsupported adapters as broken rather than unmanaged will make the product feel inconsistent.
|
2. Treating unsupported adapters as broken rather than unmanaged will make the product feel inconsistent.
|
||||||
3. Mixing external adapter-discovered skills with company-managed skills without clear labels will erode trust.
|
3. Mixing external adapter-discovered skills with company-managed skills without clear labels will erode trust.
|
||||||
4. If company skill records do not exist, import/export and UI will remain loosely coupled and round-trip fidelity will stay weak.
|
4. If company skill records do not exist, import/export and UI will remain loosely coupled and round-trip fidelity will stay weak.
|
||||||
|
5. If agent skill associations are path-based instead of shortname-based, the format will feel too technical and too Paperclip-specific.
|
||||||
|
|
||||||
## 13. Recommendation
|
## 16. Recommendation
|
||||||
|
|
||||||
The next product step should be:
|
The next product step should be:
|
||||||
|
|
||||||
1. keep the current agent-level skill sync panel as the short-term attachment UI
|
1. move skills out of agent configuration and into a dedicated `Skills` tab
|
||||||
2. add a dedicated company-level `Skills` page as the library and package-management surface
|
2. add a dedicated company-level `Skills` page as the library and package-management surface
|
||||||
3. make company import/export target that company skill library, not the agent page directly
|
3. make company import/export target that company skill library, not the agent page directly
|
||||||
4. preserve adapter-aware truth in the UI by clearly separating:
|
4. preserve adapter-aware truth in the UI by clearly separating:
|
||||||
@@ -414,5 +723,6 @@ The next product step should be:
|
|||||||
- actual
|
- actual
|
||||||
- external
|
- external
|
||||||
- unmanaged
|
- unmanaged
|
||||||
|
5. keep agent-to-skill associations shortname-based in `AGENTS.md`
|
||||||
|
|
||||||
That gives Paperclip one coherent skill story instead of forcing package management, adapter sync, and agent configuration into the same screen.
|
That gives Paperclip one coherent skill story instead of forcing package management, adapter sync, and agent configuration into the same screen.
|
||||||
|
|||||||
Reference in New Issue
Block a user