twentythree-skills 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: site
3
+ description: Query workspace-level information (domain, quotas) and run cross-content search.
4
+ ---
5
+
6
+ # TwentyThree Site Commands
7
+
8
+ > Retrieve workspace-level configuration and run cross-content search across videos, webinars,
9
+ > and categories in a single call. Always use `--json` in agentic contexts for structured output.
10
+
11
+ ## Prerequisites
12
+
13
+ Auth scope required: read (both commands).
14
+ Run `twentythree auth credentials` if not already configured.
15
+ Verify: `twentythree auth status --json`
16
+
17
+ > For any flag not listed here, run `twentythree site <cmd> --agent` to get the complete flag list, types, and defaults.
18
+
19
+ ## Commands
20
+
21
+ ### site get
22
+
23
+ **Auth scope:** read **Side effects:** none **Output:** key-value
24
+
25
+ Returns workspace-level configuration including domain, settings, and optional quota and
26
+ presentation data. Use `--include-quota` to check storage and bandwidth usage.
27
+
28
+ Flags:
29
+
30
+ | Flag | Required | Description |
31
+ |------|----------|-------------|
32
+ | `--include-presentation` | no | Include presentation settings in the response |
33
+ | `--include-quota` | no | Include quota (storage and bandwidth) information in the response |
34
+
35
+ ```bash
36
+ # Get basic workspace info
37
+ twentythree site get --json
38
+
39
+ # Get workspace info including quotas and presentation settings
40
+ twentythree site get --include-presentation --include-quota --json
41
+ ```
42
+
43
+ ### site search
44
+
45
+ **Auth scope:** read **Side effects:** none **Output:** table (Type, Title, ID)
46
+
47
+ Searches across all content types (videos, webinars, categories) in the workspace in a single
48
+ call. Returns a mixed result set with a `Type` column identifying each result's content type.
49
+
50
+ Flags:
51
+
52
+ | Flag | Required | Description |
53
+ |------|----------|-------------|
54
+ | `--search` | no | Search query string |
55
+ | `--search-in` | no | Scope the search field: `title`, `description`, or `tags` (repeatable) |
56
+ | `--selection` | no | Filter by content selection |
57
+ | `--size` | no | Number of results to return |
58
+
59
+ ```bash
60
+ # Search all content types for a keyword
61
+ twentythree site search --search "product demo" --json
62
+
63
+ # Scoped search: title and tags only, with result limit
64
+ twentythree site search --search "q2" --search-in title --search-in tags --size 20 --json
65
+ ```
66
+
67
+ ## Common Patterns
68
+
69
+ ### Workspace health check
70
+
71
+ ```bash
72
+ # Check workspace status and quota usage in one call
73
+ twentythree site get --include-quota --json
74
+ ```
75
+
76
+ ### Cross-content discovery in one call
77
+
78
+ ```bash
79
+ # Find all content (videos + webinars + categories) matching a term
80
+ twentythree site search --search "onboarding" --json
81
+
82
+ # Refine to title matches only, returning up to 50 results
83
+ twentythree site search --search "onboarding" --search-in title --size 50 --json
84
+ ```
85
+
86
+ ### Review workspace configuration before bulk operations
87
+
88
+ ```bash
89
+ # Inspect full workspace settings including presentation config
90
+ twentythree site get --include-presentation --include-quota --json
91
+
92
+ # Search for content to confirm what is available
93
+ twentythree site search --search "webinar" --json
94
+ ```
@@ -0,0 +1,188 @@
1
+ ---
2
+ name: spot
3
+ description: Create and manage embeddable video widgets (spots) that reference one or more videos.
4
+ ---
5
+
6
+ # TwentyThree Spot Commands
7
+
8
+ > Create and manage spots — embeddable video widgets that display curated sets of videos.
9
+ > Always use `--json` in agentic contexts for structured output.
10
+
11
+ ## Prerequisites
12
+
13
+ Auth scope required: read (list, check), write (create, update, delete, set-videos, reset-version).
14
+ Run `twentythree auth credentials` if not already configured.
15
+ Verify: `twentythree auth status --json`
16
+
17
+ > Use `spot check <id>` rather than `spot get` — there is no `spot get` command.
18
+ > For any flag not listed here, run `twentythree spot <cmd> --agent` to get the complete flag list, types, and defaults.
19
+
20
+ ## Commands
21
+
22
+ ### spot list
23
+
24
+ **Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Type, Active)
25
+
26
+ Flags:
27
+
28
+ | Flag | Required | Description |
29
+ |------|----------|-------------|
30
+ | `--page` | no | Page number |
31
+ | `--size` | no | Number of results per page |
32
+ | `--search` | no | Search term |
33
+ | `--spot-type` | no | Filter by spot type |
34
+ | `--active` | no | Filter by active status (boolean) |
35
+ | `--orderby` | no | Field to order results by |
36
+ | `--order` | no | Sort order (asc or desc) |
37
+
38
+ ```bash
39
+ # List all spots in the workspace
40
+ twentythree spot list --json
41
+
42
+ # List only active spots
43
+ twentythree spot list --active --json
44
+ ```
45
+
46
+ ### spot create
47
+
48
+ **Auth scope:** write **Side effects:** creates **Output:** key-value
49
+
50
+ Flags:
51
+
52
+ | Flag | Required | Description |
53
+ |------|----------|-------------|
54
+ | `--spot-name` | yes | Name for the new spot |
55
+ | `--spot-type` | no | Type of spot |
56
+ | `--spot-design` | no | Design for the spot |
57
+ | `--spot-layout` | no | Layout for the spot |
58
+
59
+ ```bash
60
+ # Create a basic spot
61
+ twentythree spot create --spot-name "Homepage Widget" --json
62
+
63
+ # Create a spot with type and layout specified
64
+ twentythree spot create --spot-name "Featured Videos" --spot-type video --spot-layout grid --json
65
+ ```
66
+
67
+ ### spot check
68
+
69
+ **Auth scope:** read **Side effects:** none **Output:** key-value
70
+
71
+ Takes `<spot-id>` as positional argument. Use this to retrieve spot details — there is no `spot get` command.
72
+
73
+ No additional flags.
74
+
75
+ ```bash
76
+ # Get details of a specific spot
77
+ twentythree spot check <spot-id> --json
78
+
79
+ # Inspect a spot before updating it
80
+ twentythree spot check <spot-id> --json
81
+ ```
82
+
83
+ ### spot update
84
+
85
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
86
+
87
+ Takes `<spot-id>` as positional argument.
88
+
89
+ Flags:
90
+
91
+ | Flag | Required | Description |
92
+ |------|----------|-------------|
93
+ | `--spot-name` | no | New name for the spot |
94
+ | `--active` | no | Set active status (boolean) |
95
+
96
+ ```bash
97
+ # Rename a spot
98
+ twentythree spot update <spot-id> --spot-name "Updated Widget Name" --json
99
+
100
+ # Deactivate a spot
101
+ twentythree spot update <spot-id> --no-active --json
102
+ ```
103
+
104
+ ### spot delete
105
+
106
+ **Auth scope:** write **Side effects:** destructive **Output:** key-value
107
+
108
+ Takes `<spot-id>` as positional argument. No additional flags.
109
+
110
+ ```bash
111
+ # Delete a spot
112
+ twentythree spot delete <spot-id> --json
113
+
114
+ # Delete a spot that is no longer in use
115
+ twentythree spot delete <spot-id> --json
116
+ ```
117
+
118
+ ### spot set-videos
119
+
120
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
121
+
122
+ Takes `<spot-id>` as positional argument. Assigns the video playlist shown in the spot.
123
+
124
+ Flags:
125
+
126
+ | Flag | Required | Description |
127
+ |------|----------|-------------|
128
+ | `--videos` | yes | Comma-separated video IDs to assign to the spot |
129
+
130
+ ```bash
131
+ # Assign a single video to a spot
132
+ twentythree spot set-videos <spot-id> --videos "<video-id>" --json
133
+
134
+ # Assign multiple videos to a spot
135
+ twentythree spot set-videos <spot-id> --videos "<video-id-1>,<video-id-2>,<video-id-3>" --json
136
+ ```
137
+
138
+ ### spot reset-version
139
+
140
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
141
+
142
+ Takes `<spot-id>` as positional argument. Resets the spot to its initial version state. No additional flags.
143
+
144
+ ```bash
145
+ # Reset a spot's version
146
+ twentythree spot reset-version <spot-id> --json
147
+
148
+ # Use after a spot update goes wrong to restore default state
149
+ twentythree spot reset-version <spot-id> --json
150
+ ```
151
+
152
+ ## Common Patterns
153
+
154
+ ### Create a spot and attach videos
155
+
156
+ ```bash
157
+ # Step 1: Create the spot
158
+ twentythree spot create --spot-name "Homepage Videos" --json
159
+
160
+ # Step 2: Assign videos to the spot using the ID from step 1
161
+ twentythree spot set-videos <spot-id> --videos "<video-id-1>,<video-id-2>,<video-id-3>" --json
162
+
163
+ # Step 3: Verify the spot configuration
164
+ twentythree spot check <spot-id> --json
165
+ ```
166
+
167
+ ### Find and inspect active spots
168
+
169
+ ```bash
170
+ # List only active spots
171
+ twentythree spot list --active --json
172
+
173
+ # Get full details of a specific spot
174
+ twentythree spot check <spot-id> --json
175
+ ```
176
+
177
+ ### Update a spot's video playlist
178
+
179
+ ```bash
180
+ # Get current spot details to see existing video assignment
181
+ twentythree spot check <spot-id> --json
182
+
183
+ # Replace the video playlist with a new set
184
+ twentythree spot set-videos <spot-id> --videos "<new-video-id-1>,<new-video-id-2>" --json
185
+
186
+ # Activate the spot if it was inactive
187
+ twentythree spot update <spot-id> --active --json
188
+ ```
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: tag
3
+ description: List and discover content tags. Tags are created implicitly via video update --tags.
4
+ ---
5
+
6
+ # TwentyThree Tag Commands
7
+
8
+ > Discover and explore content tags on TwentyThree. The tag topic is read-only — tags are created
9
+ > implicitly when applied to videos. Always use `--json` in agentic contexts for structured output.
10
+
11
+ ## Prerequisites
12
+
13
+ Auth scope required: anonymous (both commands — no auth token required).
14
+ Run `twentythree auth credentials` if not already configured.
15
+ Verify: `twentythree auth status --json`
16
+
17
+ > For any flag not listed here, run `twentythree tag <cmd> --agent` to get the complete flag list, types, and defaults.
18
+
19
+ > **Note:** To add or remove tags from content, use `video update --tags` or `webinar update --tags`. The `tag` topic itself is read-only.
20
+
21
+ ## Commands
22
+
23
+ ### tag list
24
+
25
+ **Auth scope:** anonymous **Side effects:** none **Output:** table (Tag, Count)
26
+
27
+ Flags:
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `--search` | no | Filter tags by a search string |
32
+ | `--exclude-machine-tags` | no | Exclude machine-generated tags from the results |
33
+ | `--only-machine-tags` | no | Return only machine tags (overrides --exclude-machine-tags) |
34
+ | `--only-published` | no | Return only tags from published videos |
35
+ | `--orderby` | no | Order tags by this value |
36
+ | `--order` | no | Sort order for the results |
37
+
38
+ ```bash
39
+ # List all tags in the workspace
40
+ twentythree tag list --json
41
+
42
+ # Find tags matching a search term, ordered by usage count
43
+ twentythree tag list --search "product" --orderby count --order desc --json
44
+ ```
45
+
46
+ ### tag related
47
+
48
+ **Auth scope:** anonymous **Side effects:** none **Output:** table (Tag)
49
+
50
+ Takes `<tag>` as a positional argument. No additional flags.
51
+
52
+ ```bash
53
+ # Discover tags related to a specific tag
54
+ twentythree tag related "product" --json
55
+
56
+ # Find tags related to a topic for content discovery
57
+ twentythree tag related "webinar" --json
58
+ ```
59
+
60
+ ## Common Patterns
61
+
62
+ ### Content discovery by tag
63
+
64
+ ```bash
65
+ # Step 1: Find tags that match a topic
66
+ twentythree tag list --search "onboarding" --only-published --json
67
+
68
+ # Step 2: Explore related tags to broaden content discovery
69
+ twentythree tag related "onboarding" --json
70
+
71
+ # Step 3: Use found tags to filter video search via video list
72
+ twentythree video list --json | jq '.[] | select(.tags | contains("onboarding"))'
73
+ ```
74
+
75
+ ### Audit all tags in the workspace
76
+
77
+ ```bash
78
+ # List all tags sorted by usage count (most used first)
79
+ twentythree tag list --orderby count --order desc --json
80
+
81
+ # List only human-authored tags (exclude machine-generated)
82
+ twentythree tag list --exclude-machine-tags --orderby count --order desc --json
83
+ ```
84
+
85
+ ### Apply tags to a video (write operation — not a tag command)
86
+
87
+ ```bash
88
+ # Tags are managed via video update, not the tag topic
89
+ twentythree video update <video-id> --tags "product demo tutorial" --json
90
+
91
+ # Then verify the tags were applied
92
+ twentythree tag list --search "demo" --only-published --json
93
+ ```
@@ -0,0 +1,224 @@
1
+ ---
2
+ name: thumbnail
3
+ description: Manage thumbnail templates (Liquid-based) used to render video thumbnails with metadata variables.
4
+ ---
5
+
6
+ # TwentyThree Thumbnail Commands
7
+
8
+ > Create and manage Liquid-based thumbnail templates for rendering video and webinar thumbnails.
9
+ > Always use `--json` in agentic contexts for structured output.
10
+
11
+ ## Prerequisites
12
+
13
+ Auth scope required: read (list, data, file list), write (add, update, delete, duplicate, file upload, file delete).
14
+ Run `twentythree auth credentials` if not already configured.
15
+ Verify: `twentythree auth status --json`
16
+
17
+ Thumbnail templates use Liquid templating with video metadata variables. Use `thumbnail data` to preview the render variables before authoring a template.
18
+
19
+ > For any flag not listed here, run `twentythree thumbnail <cmd> --agent` to get the complete flag list, types, and defaults.
20
+
21
+ ## Commands
22
+
23
+ ### thumbnail list
24
+
25
+ **Auth scope:** read **Side effects:** none **Output:** table (ID, Name, Type, Width, Height)
26
+
27
+ Flags:
28
+
29
+ | Flag | Required | Description |
30
+ |------|----------|-------------|
31
+ | `--search` | no | Filter by template name |
32
+ | `--object-type` | no | Filter by object type (photo, live, liveseries) |
33
+
34
+ ```bash
35
+ # List all thumbnail templates
36
+ twentythree thumbnail list --json
37
+
38
+ # List templates scoped to video objects
39
+ twentythree thumbnail list --object-type photo --json
40
+ ```
41
+
42
+ ### thumbnail add
43
+
44
+ **Auth scope:** write **Side effects:** creates **Output:** key-value (template ID)
45
+
46
+ Flags:
47
+
48
+ | Flag | Required | Description |
49
+ |------|----------|-------------|
50
+ | `--name` | yes | Name for the new thumbnail template |
51
+ | `--liquid-template` | yes | Liquid template HTML content |
52
+
53
+ ```bash
54
+ # Create a minimal thumbnail template
55
+ twentythree thumbnail add --name "Simple Title" --liquid-template "<div>{{ photo.title }}</div>" --json
56
+
57
+ # Create a branded template with metadata
58
+ twentythree thumbnail add --name "Brand Template" --liquid-template "<html><body><h1>{{ photo.title }}</h1><p>{{ photo.one }}</p></body></html>" --json
59
+ ```
60
+
61
+ ### thumbnail update
62
+
63
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
64
+
65
+ Takes `<template-id>` as positional argument.
66
+
67
+ Flags:
68
+
69
+ | Flag | Required | Description |
70
+ |------|----------|-------------|
71
+ | `--name` | no | New name for the template |
72
+ | `--liquid-template` | no | New Liquid template HTML content |
73
+ | `--object-type` | no | Object type (photo, live, liveseries) |
74
+ | `--width` | no | Template width in pixels |
75
+ | `--height` | no | Template height in pixels |
76
+
77
+ ```bash
78
+ # Rename a thumbnail template
79
+ twentythree thumbnail update <template-id> --name "Brand Template v2" --json
80
+
81
+ # Update template content and dimensions
82
+ twentythree thumbnail update <template-id> --liquid-template "<div>{{ photo.title }}</div>" --width 1280 --height 720 --json
83
+ ```
84
+
85
+ ### thumbnail delete
86
+
87
+ **Auth scope:** write **Side effects:** destructive **Output:** key-value
88
+
89
+ Takes `<template-id>` as positional argument. No additional flags.
90
+
91
+ ```bash
92
+ # Delete a thumbnail template
93
+ twentythree thumbnail delete <template-id> --json
94
+
95
+ # Delete an unused template
96
+ twentythree thumbnail delete <template-id> --json
97
+ ```
98
+
99
+ ### thumbnail duplicate
100
+
101
+ **Auth scope:** write **Side effects:** creates **Output:** key-value (new template ID)
102
+
103
+ Takes `<template-id>` as positional argument.
104
+
105
+ Flags:
106
+
107
+ | Flag | Required | Description |
108
+ |------|----------|-------------|
109
+ | `--name` | no | Name for the duplicate |
110
+
111
+ ```bash
112
+ # Duplicate a template (uses auto-generated name)
113
+ twentythree thumbnail duplicate <template-id> --json
114
+
115
+ # Duplicate a template with a new name
116
+ twentythree thumbnail duplicate <template-id> --name "Brand v2" --json
117
+ ```
118
+
119
+ ### thumbnail data
120
+
121
+ **Auth scope:** read **Side effects:** none **Output:** key-value (Liquid render variables)
122
+
123
+ Takes `<template-id>` as positional argument. Returns the variables available for use in the template's Liquid markup when rendering for a given object.
124
+
125
+ Flags:
126
+
127
+ | Flag | Required | Description |
128
+ |------|----------|-------------|
129
+ | `--object-id` | yes | Video or webinar ID to get render data for |
130
+
131
+ ```bash
132
+ # Preview Liquid render data for a video
133
+ twentythree thumbnail data <template-id> --object-id <video-id> --json
134
+
135
+ # Inspect render variables before authoring a template
136
+ twentythree thumbnail data <template-id> --object-id <video-id> --json
137
+ ```
138
+
139
+ ## Subtopic: thumbnail file
140
+
141
+ Manage image files attached to thumbnail templates. These files can be referenced inside Liquid templates as static assets.
142
+
143
+ ### thumbnail file list
144
+
145
+ **Auth scope:** read **Side effects:** none **Output:** table (Filename, Size, URL)
146
+
147
+ Takes `<template-id>` as positional argument. No additional flags.
148
+
149
+ ```bash
150
+ # List files attached to a thumbnail template
151
+ twentythree thumbnail file list <template-id> --json
152
+
153
+ # View all assets available to a template
154
+ twentythree thumbnail file list <template-id> --json
155
+ ```
156
+
157
+ ### thumbnail file upload
158
+
159
+ **Auth scope:** write **Side effects:** creates **Output:** key-value
160
+
161
+ Takes `<file-path>` as positional argument.
162
+
163
+ Flags:
164
+
165
+ | Flag | Required | Description |
166
+ |------|----------|-------------|
167
+ | `--template-id` | yes | Thumbnail template ID to attach the file to |
168
+
169
+ ```bash
170
+ # Upload a logo image to a template
171
+ twentythree thumbnail file upload ./logo.png --template-id <template-id> --json
172
+
173
+ # Upload a banner image
174
+ twentythree thumbnail file upload ./banner.jpg --template-id <template-id> --json
175
+ ```
176
+
177
+ ### thumbnail file delete
178
+
179
+ **Auth scope:** write **Side effects:** destructive **Output:** key-value
180
+
181
+ Flags:
182
+
183
+ | Flag | Required | Description |
184
+ |------|----------|-------------|
185
+ | `--template-id` | yes | Thumbnail template ID |
186
+ | `--filename` | yes | Filename to delete |
187
+
188
+ ```bash
189
+ # Delete a file from a thumbnail template
190
+ twentythree thumbnail file delete --template-id <template-id> --filename logo.png --json
191
+
192
+ # Remove an outdated banner image
193
+ twentythree thumbnail file delete --template-id <template-id> --filename old-banner.jpg --json
194
+ ```
195
+
196
+ ## Common Patterns
197
+
198
+ ### Author a new thumbnail template
199
+
200
+ Use `thumbnail data` to discover available Liquid variables before writing the template:
201
+
202
+ ```bash
203
+ # Step 1: Preview render variables for a specific video
204
+ twentythree thumbnail data <template-id> --object-id <video-id> --json
205
+
206
+ # Step 2: Create the template using discovered variables
207
+ twentythree thumbnail add --name "Brand Template" --liquid-template "<html><body><h1>{{ photo.title }}</h1></body></html>" --json
208
+ ```
209
+
210
+ ### Duplicate an existing template as a starting point
211
+
212
+ ```bash
213
+ twentythree thumbnail duplicate <template-id> --name "Brand v2" --json
214
+ ```
215
+
216
+ ### List templates scoped to object type
217
+
218
+ ```bash
219
+ # List templates for videos only
220
+ twentythree thumbnail list --object-type photo --json
221
+
222
+ # List templates for webinars
223
+ twentythree thumbnail list --object-type live --json
224
+ ```