Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
3a554b2
docs(openspec): Add consolidate-taskless-skills change proposal
thecodedrift May 11, 2026
77d17b2
fix(cli): Remove --schema flag and printSchema utility
thecodedrift May 11, 2026
6892f40
feat(cli): Rename telemetry events to help_*/cli_*_completed taxonomy
thecodedrift May 11, 2026
87d6a6c
feat(cli)!: Rename rules subcommand to rule (singular)
thecodedrift May 11, 2026
9e127cc
feat(cli): Standardize error envelope with stable error codes
thecodedrift May 11, 2026
52dff7e
feat(cli): Add global --anonymous flag with per-command behavior
thecodedrift May 11, 2026
63040f0
feat(cli): Simplify wizard and route non-TTY bare invocation to help
thecodedrift May 11, 2026
10ad745
feat(cli): Extend help command with variants, schema embedding, and slug
thecodedrift May 11, 2026
b4da407
feat(skills)!: Consolidate 10 skills + 6 commands into single taskles…
thecodedrift May 11, 2026
2f9661e
test(cli): Add v0.6 → v0.7 skill consolidation migration integration …
thecodedrift May 11, 2026
f36dea5
docs(cli): Author all topic recipes following the canonical template
thecodedrift May 11, 2026
ae1a133
docs(release): Changeset and README updates for v0.7 consolidation
thecodedrift May 11, 2026
7a9ed0f
test(cli): Cover error envelope, --anonymous matrix, and help extensions
thecodedrift May 11, 2026
10f3697
feat(cli): Add `taskless update` subcommand for non-interactive refresh
thecodedrift May 11, 2026
c517d48
chore(openspec): Archive consolidate-taskless-skills + sync main specs
thecodedrift May 11, 2026
833dcd7
fix(cli): Unbreak CI build and address PR #18 review feedback
thecodedrift May 11, 2026
24c6063
feat(cli): Add --json envelope support to auth and rule delete
thecodedrift May 11, 2026
e077854
chore: Migrate local .claude install to consolidated taskless skill
thecodedrift May 11, 2026
8d18b68
fix(cli): Address PR #18 review round 4 (check semantics, telemetry, …
thecodedrift May 11, 2026
43b8871
docs(cli): Clarify rule verify --json output shapes in anonymous recipe
thecodedrift May 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .changeset/consolidate-taskless-skills.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
"@taskless/cli": minor
---

Consolidate the 10 per-task Taskless skills into one. The `taskless` skill is now a small router whose body tells the agent to fetch the canonical recipe via `npx @taskless/cli help <topic>` rather than carrying full per-task instructions inline. Recipes live in the CLI bundle so the agent always reads the version current to the installed CLI. This addresses customer reports of the Taskless plugin causing other skills to be evicted from the working set.

**Breaking changes:**

- **Skill names removed.** `taskless-check`, `taskless-ci`, `taskless-create-rule`, `taskless-create-rule-anonymous`, `taskless-delete-rule`, `taskless-improve-rule`, `taskless-improve-rule-anonymous`, `taskless-info`, `taskless-login`, `taskless-logout` no longer exist. The single `taskless` skill replaces them. Existing v0.6 installs auto-migrate when the user runs `npx @taskless/cli` (the install plumbing reads the manifest, deletes obsolete files, writes the consolidated skill).
- **Slash commands collapsed.** The 6 commands under `commands/tskl/` are replaced by a single `/tskl` router that accepts a free-form `$ARGUMENTS` ask.
- **CLI verb renamed: `rules` → `rule` (singular).** `taskless rule create`, `taskless rule improve`, `taskless rule delete`, `taskless rule verify`, `taskless rule meta`. The plural form is no longer recognized — there is no compatibility alias. Pipelines and scripts must update.
- **`--schema` flag removed.** Schemas are now embedded inline in `taskless help <topic>` output via `z.toJSONSchema()` (zod 4 built-in). Agents that previously parsed `--schema` output should fetch the relevant `help` topic and read the embedded code-fenced JSON Schema block.
- **Telemetry rename (hard cut, no dual-emit).** `cli_help_*` events are renamed to `help_<topic>` (intent), `help_index` (no-args fetch), and `help_unknown` (unrecognized topic). Action commands now emit `cli_<action>` (start) and `cli_<action>_completed` (with `success`, `durationMs`, `errorCode?` properties). PostHog dashboards keyed on the old names will need updates.

**New features:**

- **Global `--anonymous` flag.** Recognized on every command. Per-command behavior: `info` skips the API/auth probe; `auth login` errors with "auth commands cannot be anonymous"; `rule create`/`rule improve` exit with a pointer to `taskless help <topic> --anonymous` (the local-only flow runs in the agent per the architecture decision in the OpenSpec change).
- **`taskless help <topic> --anonymous`.** Variant lookup serves `<topic>.anonymous.txt` when present and falls back to the canonical recipe otherwise. Build-time map keeps lookup O(1).
- **Standardized JSON error envelope.** When `--json` is set, failures emit `{ ok: false, code: "<CODE>", message: "<...>" }` with stable codes (`AUTH_REQUIRED`, `NO_GITHUB_REMOTE`, `RULE_GENERATION_FAILED`, `RULE_NOT_FOUND`, `INVALID_INPUT`, `NETWORK_ERROR`, `SCAN_FAILED`, `INTERNAL_ERROR`). Recipes reference these codes by name in their `## Errors` sections.
- **Recipe template.** Every help text follows the same shape: Goal / Preconditions / Steps / Input schema (where applicable) / Errors / See Also. Header line includes the CLI version and a topic version. `{{INPUT_SCHEMA}}` and `{{CLI_VERSION}}` placeholders are interpolated at runtime.
- **Bare `taskless` non-TTY routing.** Without a TTY, bare `taskless` now prints a short context preamble followed by the topic index (instead of citty's default usage screen). TTY behavior unchanged — still launches the wizard.

**Migration:**

Run `npx @taskless/cli` after upgrading. The wizard reads your existing manifest, computes the diff (10 obsolete skills + 6 obsolete commands removed, 1 new skill + 1 new command added), confirms with you, then applies.
2 changes: 2 additions & 0 deletions .claude/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.local.json
*.lock
1 change: 1 addition & 0 deletions .claude/skills/taskless
1 change: 0 additions & 1 deletion .claude/skills/taskless-check

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-ci

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-create-rule

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-create-rule-anonymous

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-delete-rule

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-improve-rule

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-improve-rule-anonymous

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-info

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-login

This file was deleted.

1 change: 0 additions & 1 deletion .claude/skills/taskless-logout

This file was deleted.

25 changes: 4 additions & 21 deletions .taskless/taskless.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,11 @@
"install": {
"targets": {
".claude": {
"skills": [
"taskless-check",
"taskless-create-rule",
"taskless-create-rule-anonymous",
"taskless-delete-rule",
"taskless-improve-rule",
"taskless-improve-rule-anonymous",
"taskless-info",
"taskless-login",
"taskless-logout"
],
"commands": [
"check.md",
"improve.md",
"info.md",
"login.md",
"logout.md",
"rule.md"
]
"skills": ["taskless"],
"commands": ["tskl.md"]
}
},
"installedAt": "2026-04-17T21:24:28.613Z",
"cliVersion": "0.5.4"
"installedAt": "2026-05-11T16:38:34.273Z",
"cliVersion": "0.6.0"
}
}
42 changes: 20 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,33 +8,28 @@ Includes a CLI that works with agentic systems (and humans too) at @taskless/cli

```
skills/
taskless-info/SKILL.md # Confirms Taskless is working
taskless-login/SKILL.md # Explains auth login
taskless-logout/SKILL.md # Explains auth logout
taskless-rule-create/SKILL.md # Creates a Taskless rule
taskless-rule-delete/SKILL.md # Deletes a Taskless rule
taskless/SKILL.md # Single consolidated router skill
commands/
taskless/ # Generated commands (do not edit)
tskl/tskl.md # Single /tskl router command
packages/
cli/ # @taskless/cli
cli/ # @taskless/cli — recipes live in cli/src/help/
scripts/
generate-commands.ts # Generates commands from skills
link-skills.ts # Symlinks skills into .claude/skills/
sync-skill-versions.ts # Syncs metadata.version to CLI version
.claude-plugin/ # Claude Code Plugin Marketplace manifest
```

## Skills
## Skill

Skills follow the [Agent Skills Specification](https://agentskills.io) with additional hooks for Claude Code integration.
Starting in v0.7, Taskless ships a **single consolidated skill** (`taskless`) plus a single `/tskl` slash command. The skill body is a small router; per-task instructions live behind `npx @taskless/cli help <topic>` and are fetched on demand.

| Skill | Command | Description |
| -------------------- | ------------------ | ------------------------------------------ |
| taskless-info | `/taskless:info` | Confirms Taskless is installed and working |
| taskless-login | `/taskless:login` | Explains how to authenticate |
| taskless-logout | `/taskless:logout` | Explains how to remove credentials |
| taskless-rule-create | `/taskless:rule` | Creates a new Taskless rule |
| taskless-rule-delete | — | Deletes a Taskless rule |
| Skill | Command | Description |
| ---------- | ------------- | ------------------------------------------------------ |
| `taskless` | `/tskl <ask>` | Router for any Taskless action (create rule, improve, |
| | | delete, check, auth, CI). Fetches the canonical recipe |
| | | for the user's intent and follows it. |

Available `taskless help` topics: `rule create`, `rule improve`, `rule delete`, `check`, `auth`, `ci`, `info`, `init`, `update`. Append `--anonymous` for the local-only flow on rule create/improve.

## CLI

Expand Down Expand Up @@ -62,14 +57,17 @@ git commit -m "chore: Releases vx.y.z" # Commit with new version number
pnpm release # Dry run — prints publish command when ready
```

### Adding a new skill
### Adding a new topic recipe

In v0.7+, new agent-facing instructions are added as **recipes**, not skills. To add a recipe:

1. Create `skills/taskless-<name>/SKILL.md` with frontmatter including `metadata.commandName`
2. Set `commandName` to `"taskless:<command>"` for a slash command, or `"-"` for no command
3. Run `pnpm build` — commands are generated automatically and embedded into the CLI
1. Create `packages/cli/src/help/<topic>.txt` following the canonical template (Goal / Preconditions / Steps / Input schema / Errors / See Also).
2. Use `{{CLI_VERSION}}` and `{{INPUT_SCHEMA}}` placeholders for runtime interpolation.
3. For topics with a substantively different local-only flow, add `<topic>.anonymous.txt`. The help command's variant lookup is automatic.
4. Update the topic table in `skills/taskless/SKILL.md` and `commands/tskl/tskl.md` so agents can discover the new topic.

### Distribution channels

- **`taskless init`** — CLI installs skills to `.claude/skills/` and commands to `.claude/commands/taskless/`
- **`taskless init`** — CLI installs the consolidated skill to `.claude/skills/taskless/` and the command to `.claude/commands/tskl/`
- **Claude Code Plugin Marketplace** — `.claude-plugin/marketplace.json` and `plugin.json`
- **Vercel Skills CLI** — `npx skills add` discovers skills from `skills/` directory
27 changes: 0 additions & 27 deletions commands/tskl/check.md

This file was deleted.

136 changes: 0 additions & 136 deletions commands/tskl/improve.md

This file was deleted.

Loading
Loading