Skip to content

feat: Add tw skill command for agent skill integrations - #5

Merged
gnapse merged 2 commits into
mainfrom
feat/skill-command
Jan 23, 2026
Merged

feat: Add tw skill command for agent skill integrations#5
gnapse merged 2 commits into
mainfrom
feat/skill-command

Conversation

@gnapse

@gnapse gnapse commented Jan 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add tw skill command to install/uninstall Claude Code skill definitions
  • Install SKILL.md globally (~/.claude/skills/) or locally (./.claude/skills/)
  • SKILL.md documents all tw commands for coding agent integration

Commands

tw skill list                         # List agents + install status
tw skill list --local                 # Check local installation
tw skill install claude-code          # Install globally
tw skill install claude-code --local  # Install in project
tw skill install claude-code --force  # Overwrite existing
tw skill uninstall claude-code        # Remove skill

Test plan

  • npm run build passes
  • npm test passes (124 tests)
  • tw skill list shows available agents
  • tw skill install claude-code installs to ~/.claude/skills/twist-cli/SKILL.md
  • tw skill install claude-code --local installs to ./.claude/skills/twist-cli/SKILL.md
  • tw skill install without --force errors if exists
  • tw skill uninstall claude-code removes skill

🤖 Generated with Claude Code

scottlovegrove added a commit that referenced this pull request Jan 22, 2026
Implements secure OAuth 2.0 authentication flow with PKCE for twist-cli:

- OAuth 2.0 with PKCE (S256) for secure authentication without client secrets
- Dynamic Client Registration (DCR) creates fresh client credentials per session
- Local callback server (port 8766) with automatic browser opening
- Proper resource cleanup to prevent server leaks (inspired by todoist-cli PR #5)
- HTTP Basic auth for token exchange following RFC 6749
- Comprehensive error handling and user-friendly messages
- Full test coverage including edge cases and cleanup scenarios

Security improvements:
- No hardcoded client secrets in source code
- Fresh client credentials per authentication session
- State parameter validation for CSRF protection
- Secure code challenge/verifier generation and validation

New commands:
- `tw auth login` - OAuth browser authentication (new)
- `tw auth token <token>` - Manual token entry (existing, unchanged)
- `tw auth status` - Show authentication status (updated help text)
- `tw auth logout` - Clear saved token (existing, unchanged)

Backward compatibility maintained for existing token-based authentication.

Co-Authored-By: Claude Sonnet 4 <noreply@anthropic.com>
scottlovegrove added a commit that referenced this pull request Jan 22, 2026
Implements secure OAuth 2.0 authentication flow with PKCE for twist-cli:

- OAuth 2.0 with PKCE (S256) for secure authentication without client secrets
- Dynamic Client Registration (DCR) creates fresh client credentials per session
- Local callback server (port 8766) with automatic browser opening
- Proper resource cleanup to prevent server leaks (inspired by todoist-cli PR #5)
- HTTP Basic auth for token exchange following RFC 6749
- Comprehensive error handling and user-friendly messages
- Full test coverage including edge cases and cleanup scenarios

Security improvements:
- No hardcoded client secrets in source code
- Fresh client credentials per authentication session
- State parameter validation for CSRF protection
- Secure code challenge/verifier generation and validation

New commands:
- `tw auth login` - OAuth browser authentication (new)
- `tw auth token <token>` - Manual token entry (existing, unchanged)
- `tw auth status` - Show authentication status (updated help text)
- `tw auth logout` - Clear saved token (existing, unchanged)

Backward compatibility maintained for existing token-based authentication.

Co-authored-by: Claude Sonnet 4 <noreply@anthropic.com>
github-actions Bot pushed a commit that referenced this pull request Jan 22, 2026
# 1.0.0 (2026-01-22)

### Bug Fixes

* add UTF-8 charset to OAuth callback HTML responses ([#8](#8)) ([fcb2d49](fcb2d49))

### Features

* Add Biome linting, upgrade to Node 20, and add CI workflows ([#3](#3)) ([57f802e](57f802e))
* add loading animations with global API proxy integration ([#7](#7)) ([bf53bfb](bf53bfb))
* Add OAuth authentication with dynamic client registration ([#6](#6)) ([2845ebd](2845ebd)), closes [#5](#5)
* add semantic release automation for NPM publishing ([#10](#10)) ([c756324](c756324))
* Refactor login command to auth with status/logout subcommands ([#4](#4)) ([59e6493](59e6493))
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gnapse
gnapse force-pushed the feat/skill-command branch from 2b3630a to 1228ce6 Compare January 22, 2026 18:08
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@gnapse gnapse added the 🙋 Ask PR PR must be reviewed before merging label Jan 22, 2026
@gnapse gnapse self-assigned this Jan 22, 2026
@gnapse
gnapse merged commit 9b7a470 into main Jan 23, 2026
2 checks passed
@gnapse
gnapse deleted the feat/skill-command branch January 23, 2026 15:13
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.1.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🙋 Ask PR PR must be reviewed before merging released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants