refactor(cli): four install-use-cases and four capability classes duplicate the same pipeline
Nobody has claimed this yet.
Assessment
- Difficulty
- 1/5
- Estimated time
- Under an hour
- Newbie friendliness
- 15/100
- Issue type
- Refactor
- Clarity
- Clearly specified
- Activity status
- Stale
- Tech stack
- typescript
- Domain
- cli
Research direction
Review PR #795 first; it contains the shared InstallContentSectionUseCase and the explicit per-capability behavior described here. Done means #795 is merged, the jscpd duplication gate remains green, and this issue is closed; no further deduplication is in scope.
Written by the indexing model from the issue text.
Description
Context
The audit found two duplication clusters. PR #795 resolves them at the correct boundary.
Resolution in #795
Content installation
The four content installers now delegate to one InstallContentSectionUseCase. Thin typed wrappers provide only a section descriptor: capability key, filename acceptance and frontmatter conversion. This shares the walk/filter/transform pipeline without erasing the true differences in agent, command, rule and skill contracts.
Tool capabilities
The capability classes deliberately remain separate domain types. They are not interchangeable:
- agents carry TOML/Markdown and deserialization behavior;
- rules derive an installed location through a probe;
- skills have prefix-mode behavior;
- commands retain their own conversion contract.
A shared base class would turn these differences into optional switches and weaken the tools-context model. The installer descriptor now absorbs the differing acceptsFileName shapes at the only shared caller, so callers no longer implement incompatible paths.
jscpd is a passing PR gate; no new duplicate cluster is reported.
Acceptance criteria
- #795 retains the shared
InstallContentSectionUseCasefor agents, commands, rules and skills. - Per-capability behavior stays explicit in its domain type; no generic capability base is introduced.
- The #795 duplication gate remains green.
- #795 links this issue; close it after merge.
Boundary
No further deduplication work belongs here. A future repeated behavior must be demonstrated at a shared caller before abstraction.
- Dominant language
- TypeScript
- Stars
- 481
- Forks
- 45
- Avg merge
- 17h 40m
- Merged PRs (30d)
- 106
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ai-driven-dev/framework
-
refactor(aidd-orchestrator): the check zone says when to stop, and reviews its axes in one round Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#887 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ai-driven-dev/framework#873 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ai-driven-dev/framework#872 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
ai-driven-dev/framework#625 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ai-driven-dev/framework#467 · 1 comment ·
All issues in ai-driven-dev/framework
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
fullcalendar/fullcalendar#8106 ·