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,174 @@
1
+ ---
2
+ name: poll
3
+ description: Create and manage in-webinar polls (questions with answer options shown to live viewers).
4
+ ---
5
+
6
+ # TwentyThree Poll Commands
7
+
8
+ > Create, configure, and manage interactive polls shown to live webinar viewers.
9
+ > Always use `--json` in agentic contexts for structured output.
10
+
11
+ ## Prerequisites
12
+
13
+ Auth scope required: anonymous (list, answer), write (add, update, remove, set-options).
14
+ Run `twentythree auth credentials` if not already configured.
15
+ Verify: `twentythree auth status --json`
16
+
17
+ > Polls are attached to webinars (live objects) via `--object-id`. Always pass the webinar ID as `--object-id`.
18
+ > For any flag not listed here, run `twentythree poll <cmd> --agent` to get the complete flag list, types, and defaults.
19
+
20
+ ## Commands
21
+
22
+ ### poll list
23
+
24
+ **Auth scope:** anonymous **Side effects:** none **Output:** table (ID, Question, Open, Results Visible)
25
+
26
+ Flags:
27
+
28
+ | Flag | Required | Description |
29
+ |------|----------|-------------|
30
+ | `--object-id` | yes | Object ID (webinar or live object) |
31
+ | `--object-token` | no | Object token (auto-looked up if omitted) |
32
+
33
+ ```bash
34
+ # List all polls for a webinar
35
+ twentythree poll list --object-id <webinar-id> --json
36
+
37
+ # List polls using a specific object token
38
+ twentythree poll list --object-id <webinar-id> --object-token <token> --json
39
+ ```
40
+
41
+ ### poll add
42
+
43
+ **Auth scope:** write **Side effects:** creates **Output:** none
44
+
45
+ Flags:
46
+
47
+ | Flag | Required | Description |
48
+ |------|----------|-------------|
49
+ | `--object-id` | yes | Object ID (webinar or live object) |
50
+ | `--question` | no | Poll question text |
51
+
52
+ ```bash
53
+ # Create a new poll for a webinar
54
+ twentythree poll add --object-id <webinar-id> --question "What is your role?" --json
55
+
56
+ # Create a poll without a question (set it later with update)
57
+ twentythree poll add --object-id <webinar-id> --json
58
+ ```
59
+
60
+ ### poll update
61
+
62
+ **Auth scope:** write **Side effects:** updates **Output:** none
63
+
64
+ Takes `<poll-id>` as positional argument.
65
+
66
+ Flags:
67
+
68
+ | Flag | Required | Description |
69
+ |------|----------|-------------|
70
+ | `--question` | no | Updated poll question text |
71
+ | `--open` | no | Open or close the poll (boolean) |
72
+ | `--display-results` | no | Show or hide results to viewers (boolean) |
73
+
74
+ ```bash
75
+ # Open a poll for voting
76
+ twentythree poll update <poll-id> --open --json
77
+
78
+ # Close the poll and display results to viewers
79
+ twentythree poll update <poll-id> --no-open --display-results --json
80
+ ```
81
+
82
+ ### poll remove
83
+
84
+ **Auth scope:** write **Side effects:** destructive **Output:** none
85
+
86
+ Takes `<poll-id>` as positional argument. No additional flags.
87
+
88
+ ```bash
89
+ # Delete a poll from a webinar
90
+ twentythree poll remove <poll-id> --json
91
+
92
+ # Remove a poll that is no longer needed
93
+ twentythree poll remove <poll-id> --json
94
+ ```
95
+
96
+ ### poll answer
97
+
98
+ **Auth scope:** anonymous **Side effects:** creates **Output:** none
99
+
100
+ Takes `<poll-id>` as positional argument. Submits a viewer's answer to a poll.
101
+
102
+ Flags:
103
+
104
+ | Flag | Required | Description |
105
+ |------|----------|-------------|
106
+ | `--object-id` | no | Object ID (webinar or live object) |
107
+ | `--object-token` | no | Object token (auto-looked up if omitted) |
108
+ | `--option-id` | no | Poll option ID to vote for |
109
+
110
+ ```bash
111
+ # Submit a poll answer by option ID
112
+ twentythree poll answer <poll-id> --object-id <webinar-id> --option-id <option-id> --json
113
+
114
+ # Answer with an object token
115
+ twentythree poll answer <poll-id> --object-id <webinar-id> --object-token <token> --option-id <option-id> --json
116
+ ```
117
+
118
+ ### poll set-options
119
+
120
+ **Auth scope:** write **Side effects:** updates **Output:** none
121
+
122
+ Takes `<poll-id>` as positional argument. Use `--option` repeatedly to set multiple options.
123
+
124
+ Flags:
125
+
126
+ | Flag | Required | Description |
127
+ |------|----------|-------------|
128
+ | `--option` | no | Poll option text (repeat flag for multiple options) |
129
+
130
+ ```bash
131
+ # Set two options on a poll
132
+ twentythree poll set-options <poll-id> --option "Yes" --option "No" --json
133
+
134
+ # Set multiple options
135
+ twentythree poll set-options <poll-id> --option "Option A" --option "Option B" --option "Option C" --json
136
+ ```
137
+
138
+ ## Common Patterns
139
+
140
+ ### Create a poll with options and open it for voting
141
+
142
+ ```bash
143
+ # Step 1: Create the poll for a webinar
144
+ twentythree poll add --object-id <webinar-id> --question "Which feature matters most?" --json
145
+
146
+ # Step 2: Set the answer options using the poll ID from step 1
147
+ twentythree poll set-options <poll-id> --option "Performance" --option "Ease of Use" --option "Integrations" --json
148
+
149
+ # Step 3: Open the poll so viewers can vote
150
+ twentythree poll update <poll-id> --open --json
151
+
152
+ # Step 4: Close the poll and display results at the end
153
+ twentythree poll update <poll-id> --no-open --display-results --json
154
+ ```
155
+
156
+ ### Review existing polls on a webinar
157
+
158
+ ```bash
159
+ # List all polls and their current state
160
+ twentythree poll list --object-id <webinar-id> --json
161
+
162
+ # Open a previously closed poll again
163
+ twentythree poll update <poll-id> --open --json
164
+ ```
165
+
166
+ ### Update a poll question before opening
167
+
168
+ ```bash
169
+ # Change the question text before opening to viewers
170
+ twentythree poll update <poll-id> --question "Updated: Which feature is most important?" --json
171
+
172
+ # Then open for voting
173
+ twentythree poll update <poll-id> --open --json
174
+ ```
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: presentation
3
+ description: Workspace-level presentation and embed settings (link locations and setting CRUD).
4
+ ---
5
+
6
+ # TwentyThree Presentation Commands
7
+
8
+ > Manage workspace-level presentation and embed configuration.
9
+ > There is no CRUD for presentation objects — these commands manage workspace-level settings only.
10
+ > Always use `--json` in agentic contexts for structured output.
11
+
12
+ ## Prerequisites
13
+
14
+ Auth scope required: read (page link-locations, setting list), write (setting update).
15
+ Run `twentythree auth credentials` if not already configured.
16
+ Verify: `twentythree auth status --json`
17
+
18
+ > For any flag not listed here, run `twentythree presentation <cmd> --agent` to get the complete flag list, types, and defaults.
19
+
20
+ ## Commands
21
+
22
+ ### presentation page link-locations
23
+
24
+ **Auth scope:** read **Side effects:** none **Output:** table (Link Location, Label)
25
+
26
+ Lists valid link location identifiers for presentation pages. No flags required.
27
+ Use this to discover accepted values before authoring presentation content.
28
+
29
+ ```bash
30
+ # Discover all available link locations
31
+ twentythree presentation page link-locations --json
32
+
33
+ # Use in a script to inspect available values
34
+ twentythree presentation page link-locations --json
35
+ ```
36
+
37
+ ### presentation setting list
38
+
39
+ **Auth scope:** read **Side effects:** none **Output:** key-value
40
+
41
+ Lists all current workspace presentation settings as key-value pairs. No flags required.
42
+ Use this to review current configuration before making updates.
43
+
44
+ ```bash
45
+ # List all current presentation settings
46
+ twentythree presentation setting list --json
47
+
48
+ # Inspect settings before planning updates
49
+ twentythree presentation setting list --json
50
+ ```
51
+
52
+ ### presentation setting update
53
+
54
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
55
+
56
+ Updates one or more workspace presentation settings. The `--set` flag is repeatable — pass it
57
+ multiple times to update several settings in a single call.
58
+
59
+ Flags:
60
+
61
+ | Flag | Required | Description |
62
+ |------|----------|-------------|
63
+ | `--set` | no | Setting key=value pair (repeatable) |
64
+
65
+ ```bash
66
+ # Update the site name
67
+ twentythree presentation setting update --set site_name="My Brand" --json
68
+
69
+ # Update multiple settings atomically
70
+ twentythree presentation setting update \
71
+ --set site_name="My Brand" \
72
+ --set logo_url="https://example.com/logo.png" \
73
+ --json
74
+ ```
75
+
76
+ ## Common Patterns
77
+
78
+ ### Discover link locations before authoring content
79
+
80
+ ```bash
81
+ # Step 1: List available link locations to know accepted values
82
+ twentythree presentation page link-locations --json
83
+
84
+ # Step 2: Review current presentation settings
85
+ twentythree presentation setting list --json
86
+
87
+ # Step 3: Update relevant settings
88
+ twentythree presentation setting update --set site_name="Updated Brand" --json
89
+ ```
90
+
91
+ ### Update multiple presentation settings atomically
92
+
93
+ ```bash
94
+ # Apply several settings in one command call
95
+ twentythree presentation setting update \
96
+ --set site_name="Q2 Campaign" \
97
+ --set logo_url="https://assets.example.com/logo-q2.png" \
98
+ --json
99
+ ```
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: protection
3
+ description: Apply and verify access protection (password/SSO/token) on videos and webinars.
4
+ ---
5
+
6
+ # TwentyThree Protection Commands
7
+
8
+ > Apply, remove, and verify access protection on videos and webinars.
9
+ > Supported protection methods: `password`, `sso`, `token`.
10
+ > Always use `--json` in agentic contexts for structured output.
11
+
12
+ ## Prerequisites
13
+
14
+ Auth scope required: write (protect, unprotect), read (verify).
15
+ Valid `--protection-method` values: `password`, `sso`, `token`.
16
+ Run `twentythree auth credentials` if not already configured.
17
+ Verify: `twentythree auth status --json`
18
+
19
+ > For any flag not listed here, run `twentythree protection <cmd> --agent` to get the complete flag list, types, and defaults.
20
+
21
+ ## Commands
22
+
23
+ ### protection protect
24
+
25
+ **Auth scope:** write **Side effects:** creates **Output:** key-value
26
+
27
+ Applies protection to a video or webinar. Specify the method with `--protection-method`.
28
+ The optional `--grace-minutes` flag delays protection activation to allow existing sessions to continue.
29
+
30
+ Flags:
31
+
32
+ | Flag | Required | Description |
33
+ |------|----------|-------------|
34
+ | `--protection-method` | yes | Protection method: `password`, `sso`, or `token` |
35
+ | `--object-id` | no | ID of the video or webinar to protect |
36
+ | `--grace-minutes` | no | Grace period in minutes before protection activates |
37
+
38
+ ```bash
39
+ # Protect a video with password, allowing a 10-minute grace period
40
+ twentythree protection protect --protection-method password \
41
+ --object-id <video-id> --grace-minutes 10 --json
42
+
43
+ # Apply SSO protection to a webinar
44
+ twentythree protection protect --protection-method sso \
45
+ --object-id <webinar-id> --json
46
+ ```
47
+
48
+ ### protection unprotect
49
+
50
+ **Auth scope:** write **Side effects:** destructive **Output:** key-value
51
+
52
+ Removes protection from a video or webinar.
53
+
54
+ Flags:
55
+
56
+ | Flag | Required | Description |
57
+ |------|----------|-------------|
58
+ | `--object-id` | no | ID of the video or webinar to unprotect |
59
+
60
+ ```bash
61
+ # Remove protection from a specific video
62
+ twentythree protection unprotect --object-id <video-id> --json
63
+
64
+ # Remove protection from a webinar
65
+ twentythree protection unprotect --object-id <webinar-id> --json
66
+ ```
67
+
68
+ ### protection verify
69
+
70
+ **Auth scope:** read **Side effects:** none **Output:** key-value
71
+
72
+ Checks whether a viewer has valid credentials for protected content. Useful for server-side
73
+ access checks before serving an embed or issuing a session token.
74
+
75
+ Flags:
76
+
77
+ | Flag | Required | Description |
78
+ |------|----------|-------------|
79
+ | `--protection-method` | yes | Protection method to verify against: `password`, `sso`, or `token` |
80
+ | `--video-id` | no | Video ID to verify access for (maps to photo_id in API) |
81
+ | `--webinar-id` | no | Webinar ID to verify access for (maps to live_id in API) |
82
+ | `--object-id` | no | Object ID to verify access for |
83
+ | `--verification-data` | no | Verification data (e.g. password value, token) |
84
+
85
+ ```bash
86
+ # Verify password access to a video
87
+ twentythree protection verify --protection-method password \
88
+ --video-id <video-id> --verification-data "secretpass" --json
89
+
90
+ # Verify token access to a webinar
91
+ twentythree protection verify --protection-method token \
92
+ --webinar-id <webinar-id> --verification-data <viewer-token> --json
93
+ ```
94
+
95
+ ## Common Patterns
96
+
97
+ ### Protect a webinar with a password and a grace period
98
+
99
+ ```bash
100
+ # Apply password protection with a 30-minute grace period for current viewers
101
+ twentythree protection protect \
102
+ --protection-method password \
103
+ --object-id <webinar-id> \
104
+ --grace-minutes 30 \
105
+ --json
106
+ ```
107
+
108
+ ### Verify a viewer's access before serving content
109
+
110
+ ```bash
111
+ # Server-side check: verify the viewer has a valid token before embedding
112
+ twentythree protection verify \
113
+ --protection-method token \
114
+ --video-id <video-id> \
115
+ --verification-data <viewer-token> \
116
+ --json
117
+ # => Returns access status in the response
118
+ ```
119
+
120
+ ### Full lifecycle: protect, verify, then unprotect
121
+
122
+ ```bash
123
+ # Step 1: Apply SSO protection to a video
124
+ twentythree protection protect --protection-method sso --object-id <video-id> --json
125
+
126
+ # Step 2: Verify a viewer has SSO access
127
+ twentythree protection verify --protection-method sso --video-id <video-id> --json
128
+
129
+ # Step 3: Remove protection when the access period ends
130
+ twentythree protection unprotect --object-id <video-id> --json
131
+ ```
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: session
3
+ description: Generate and redeem short-lived viewer session tokens for SSO-style access.
4
+ ---
5
+
6
+ # TwentyThree Session Commands
7
+
8
+ > Generate and redeem short-lived viewer session tokens for SSO-style access to TwentyThree content.
9
+ > Session tokens are for viewer SSO. They are distinct from CLI auth (`twentythree auth credentials`).
10
+ > Always use `--json` in agentic contexts for structured output.
11
+
12
+ ## Prerequisites
13
+
14
+ Auth scope required: read (both commands).
15
+ Run `twentythree auth credentials` if not already configured.
16
+ Verify: `twentythree auth status --json`
17
+
18
+ > For any flag not listed here, run `twentythree session <cmd> --agent` to get the complete flag list, types, and defaults.
19
+
20
+ ## Commands
21
+
22
+ ### session get-token
23
+
24
+ **Auth scope:** read **Side effects:** none **Output:** key-value
25
+
26
+ Generates a short-lived session token for a viewer. The token can be passed to the viewer who
27
+ then redeems it via `session redeem-token` to gain authenticated access to TwentyThree content.
28
+
29
+ Flags:
30
+
31
+ | Flag | Required | Description |
32
+ |------|----------|-------------|
33
+ | `--return-url` | no | Return URL after the viewer authenticates via the session token |
34
+ | `--email` | no | Viewer's email address (used to identify the viewer in the session) |
35
+ | `--full-name` | no | Viewer's full name (used to identify the viewer in the session) |
36
+
37
+ ```bash
38
+ # Generate a basic session token
39
+ twentythree session get-token --json
40
+
41
+ # Generate a session token for a named viewer with a return URL
42
+ twentythree session get-token \
43
+ --email viewer@example.com \
44
+ --full-name "Jane Doe" \
45
+ --return-url "https://example.com/videos" \
46
+ --json
47
+ ```
48
+
49
+ ### session redeem-token
50
+
51
+ **Auth scope:** read **Side effects:** updates **Output:** key-value
52
+
53
+ Redeems a session token to authenticate a viewer. The token is typically passed from the
54
+ server-side `session get-token` response to the viewer's browser, which then exchanges it
55
+ for a session.
56
+
57
+ Flags:
58
+
59
+ | Flag | Required | Description |
60
+ |------|----------|-------------|
61
+ | `--session-token` | yes | Session token to redeem |
62
+
63
+ ```bash
64
+ # Redeem a session token
65
+ twentythree session redeem-token --session-token <token> --json
66
+
67
+ # Redeem in a scripted viewer-access flow
68
+ twentythree session redeem-token --session-token <session-token> --json
69
+ ```
70
+
71
+ ## Common Patterns
72
+
73
+ ### Full SSO viewer access flow
74
+
75
+ ```bash
76
+ # Step 1: Server-side — generate a session token for the viewer
77
+ twentythree session get-token \
78
+ --email viewer@example.com \
79
+ --full-name "Jane Doe" \
80
+ --return-url "https://platform.example.com/dashboard" \
81
+ --json
82
+ # => Returns { session_token: "<token>", ... }
83
+ # Capture: session_token
84
+
85
+ # Step 2: Pass the token to the viewer (via redirect, page param, or API response)
86
+
87
+ # Step 3: Viewer redeems the token to establish their session
88
+ twentythree session redeem-token --session-token <token> --json
89
+ ```
90
+
91
+ ### Generate a session token for anonymous viewer access
92
+
93
+ ```bash
94
+ # Token without email/name — creates an anonymous viewer session
95
+ twentythree session get-token \
96
+ --return-url "https://example.com/content" \
97
+ --json
98
+ ```
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: setting
3
+ description: Update workspace settings via key=value pairs with optional dry-run validation.
4
+ ---
5
+
6
+ # TwentyThree Setting Commands
7
+
8
+ > Update workspace configuration settings as key=value pairs.
9
+ > Setting keys are workspace-specific. Check the workspace admin UI for the list of valid keys.
10
+ > Always use `--json` in agentic contexts for structured output.
11
+
12
+ ## Prerequisites
13
+
14
+ Auth scope required: write.
15
+ Run `twentythree auth credentials` if not already configured.
16
+ Verify: `twentythree auth status --json`
17
+
18
+ > For any flag not listed here, run `twentythree setting update --agent` to get the complete flag list, types, and defaults.
19
+
20
+ ## Commands
21
+
22
+ ### setting update
23
+
24
+ **Auth scope:** write **Side effects:** updates **Output:** key-value
25
+
26
+ Updates one or more workspace settings as key=value pairs. The `--set` flag is repeatable —
27
+ pass it multiple times to update several settings in a single call.
28
+
29
+ Use `--validate-only` to perform a dry-run and verify that the key=value pairs are accepted
30
+ before actually applying them. This is especially useful when updating multiple settings.
31
+
32
+ Flags:
33
+
34
+ | Flag | Required | Description |
35
+ |------|----------|-------------|
36
+ | `--set` | no | Setting key=value pair (repeatable) |
37
+ | `--validate-only` | no | Dry-run: validate settings without applying changes |
38
+
39
+ ```bash
40
+ # Update a single setting
41
+ twentythree setting update --set site_name="My Workspace" --json
42
+
43
+ # Update multiple settings in one call
44
+ twentythree setting update --set theme=dark --set language=en --json
45
+
46
+ # Dry-run: validate before applying
47
+ twentythree setting update --set site_name="Test" --validate-only --json
48
+ ```
49
+
50
+ ## Common Patterns
51
+
52
+ ### Dry-run a setting change before applying
53
+
54
+ ```bash
55
+ # Step 1: Validate the change (no write to the workspace)
56
+ twentythree setting update --set branding_color="#ff0000" --validate-only --json
57
+
58
+ # Step 2: If validation passes, apply the change for real
59
+ twentythree setting update --set branding_color="#ff0000" --json
60
+ ```
61
+
62
+ ### Apply multiple settings atomically
63
+
64
+ ```bash
65
+ # All settings applied in a single API call
66
+ twentythree setting update \
67
+ --set site_name="Brand Workspace" \
68
+ --set language=en \
69
+ --set timezone=UTC \
70
+ --json
71
+ ```
72
+
73
+ ### Validate a multi-key update before committing
74
+
75
+ ```bash
76
+ # Step 1: Validate all keys together
77
+ twentythree setting update \
78
+ --set key1=val1 \
79
+ --set key2=val2 \
80
+ --set key3=val3 \
81
+ --validate-only \
82
+ --json
83
+
84
+ # Step 2: Review validation response, then apply if OK
85
+ twentythree setting update \
86
+ --set key1=val1 \
87
+ --set key2=val2 \
88
+ --set key3=val3 \
89
+ --json
90
+ ```
91
+
92
+ ### Timezone and locale configuration
93
+
94
+ ```bash
95
+ # Set workspace timezone
96
+ twentythree setting update --set timezone=Europe/Copenhagen --json
97
+
98
+ # Set workspace language
99
+ twentythree setting update --set language=da --json
100
+
101
+ # Set both together with a dry-run check first
102
+ twentythree setting update --set timezone=Europe/Copenhagen --set language=da --validate-only --json
103
+ twentythree setting update --set timezone=Europe/Copenhagen --set language=da --json
104
+ ```
105
+
106
+ ### Branding and appearance settings
107
+
108
+ ```bash
109
+ # Update the workspace site name shown in the embed player
110
+ twentythree setting update --set site_name="Company Video Hub" --json
111
+
112
+ # Validate a logo URL before applying
113
+ twentythree setting update --set logo_url="https://cdn.example.com/logo.png" --validate-only --json
114
+ twentythree setting update --set logo_url="https://cdn.example.com/logo.png" --json
115
+ ```