Group Make targets (and other command types) with a consistent visual language
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 38/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- typescript
調査の方向性
Start with src/CommandTreeProvider.ts and its buildRootCategories() entry point, then inspect the providers under src/discovery/. Review src/discovery/make.ts for the variable-filtering requirement and trace how each provider currently builds its command list. Done means a shared TaskGroup classifier and consistent grouping across the listed providers, with the specified Make, VS Code, Mise, and end-to-end fixture behavior.
索引モデルが issue の本文から書いたものです。
説明
Problem
The tree currently shows a flat list of Make targets under Make Targets (13) — help, build, ci, clean, fmt, lint, package, setup, test, test-exclude-ci, plus variables like COVERAGE_THRESHOLDS_FILE and UNAME that leaked in as pseudo-targets. This doesn't scale: real Makefiles routinely have dozens of targets and users can't find what they need.
The same problem exists across every command-type we support (Mise tasks, VS Code tasks, npm scripts, Just recipes, etc.). Each provider currently shows a flat list, and there is no shared visual language for grouping.
Goal
A consistent grouping visual language across all command types — Make, Mise, VS Code tasks, npm, Just, Cargo, Gradle, Rake, Taskfile, etc. — so that a user who learns the grouping for one provider immediately understands the others.
GNU convention (source of truth for Make)
Per GNU Makefile Conventions — Standard Targets for Users, standard target names fall into natural groups:
| Group | Standard targets |
|---|---|
| Build | all (default) |
| Install | install, install-html, install-pdf, install-ps, install-strip, installdirs, installcheck, uninstall |
| Clean | clean, mostlyclean, distclean, maintainer-clean |
| Test | check |
| Docs | info, html, pdf, ps, TAGS |
| Dist | dist |
These are the canonical groups a user expects. Our grouping must at minimum recognise these.
Proposed groups (cross-provider)
A single taxonomy used by every discovery provider:
- Build — compile/package (Make
all/build, npmbuild, Cargobuild, VS Codebuildgroup, Misebuild:*) - Test — Make
check/test, npmtest,pytest, Cargotest, VS Codetestgroup - Lint / Format —
lint,fmt,format,check-format - Run / Dev —
start,dev,serve,watch, launch configs - Clean —
clean,distclean,mostlyclean,maintainer-clean - Install / Deps —
install,setup,bootstrap,uninstall,install-* - Release / Dist —
dist,package,release,publish - CI —
ci,ci-* - Docs —
docs,html,pdf,info,ps - Other — anything unmatched
Classification strategy
- Name-prefix / name-suffix rules —
test-*,*-test,docker-*,db-*group by prefix. - Known-target dictionary — exact matches to GNU standard names and common ecosystem names (npm's
start/test/build; Cargo'sbuild/test/check/doc; Misebuild:*/test:*). - Provider-native metadata where available:
- VS Code tasks:
groupfield (build,test) — see tasks.json reference. - npm: lifecycle scripts (
pre*/post*) are grouped under their parent. - Mise:
:namespace (build:web,build:api) — group by the prefix before:. - Just: doc comments above recipes.
- Make: parse
## group: <name>or## commentannotations when present (popularmake helpconvention).
- VS Code tasks:
- Fallback: ungrouped targets go to Other.
Visual language
- Each group shown as a collapsible tree node with a consistent icon + label across providers.
- e.g. "Build" always uses the same icon whether it comes from Make, npm, or VS Code tasks.
- Group order is fixed across providers (Build → Test → Lint → Run → Clean → Install → Release → CI → Docs → Other).
- Groups with zero matches are hidden.
- Single-item groups still render (consistency beats compactness).
- A setting
commandtree.groupingwith valuesauto(default) /flat/customlets users opt out.
Out of scope (follow-ups)
- User-configurable custom groups via
commandtree.json. - Per-workspace overrides of the default classification dictionary.
- Drag-to-regroup in the tree.
Acceptance
- Shared
TaskGroupenum + classifier module used by every discovery provider - GNU standard Make target names classify correctly (see table above)
- VS Code tasks honour their native
groupfield - Mise
:namespaces become groups - Variables like
COVERAGE_THRESHOLDS_FILEandUNAMEno longer appear as Make "targets" (separate filtering fix in src/discovery/make.ts) - E2E test asserts that, given a fixture Makefile with
all,clean,distclean,check,install, they land in Build / Clean / Clean / Test / Install respectively - E2E test asserts grouping is identical in structure for a fixture
package.json,Justfile, andmise.tomlwith equivalent tasks
References
- GNU Makefile Conventions
- GNU Standard Targets for Users
- VS Code task groups
- src/CommandTreeProvider.ts —
buildRootCategories() - src/discovery/ — 20+ providers that all need the shared classifier
- 主要言語
- TypeScript
- スター
- 3
- フォーク
- 2
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Nimblesite/CommandTree のほかの issue
-
enhancement priority: critical security
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
Nimblesite/CommandTree#24 ·
Nimblesite/CommandTree の issue をすべて見る
似ている issue
-
bug DUP Reservations
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
bcgov/reserve-rec-public#952 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
daufderheide/racecoordinator_ai#948 ·
メンテナーはふだん 1 日以内に返信
-
Bug pulumi/pulumi
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
bug priority:high
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
api bug claude
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
diegosouzapw/OmniRoute#15764 ·
メンテナーはふだん 2 日以内に返信