brn-toolkit 1.0.1 → 1.0.2

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.
@@ -4,37 +4,43 @@
4
4
  * Usage: npx tsx get_issue.ts <owner/repo/issues/number> or <owner/repo> <issue_number>
5
5
  */
6
6
  import { githubRequest } from "../../../lib/utils.js";
7
- let repoPath = process.argv[2];
8
- let issueNumber = process.argv[3];
9
- // Handle URL-like format: owner/repo/issues/123
10
- if (repoPath && repoPath.includes("/issues/")) {
11
- const parts = repoPath.split("/");
12
- issueNumber = parts.pop();
13
- parts.pop(); // remove 'issues'
14
- repoPath = parts.join("/");
7
+ async function main() {
8
+ let repoPath = process.argv[2];
9
+ let issueNumber = process.argv[3];
10
+ // Handle URL-like format: owner/repo/issues/123
11
+ if (repoPath && repoPath.includes("/issues/")) {
12
+ const parts = repoPath.split("/");
13
+ issueNumber = parts.pop();
14
+ parts.pop(); // remove 'issues'
15
+ repoPath = parts.join("/");
16
+ }
17
+ if (!repoPath || !issueNumber) {
18
+ console.log("Usage: npx tsx get_issue.ts <owner/repo> <issue_number>");
19
+ console.log("Example: npx tsx get_issue.ts octocat/Hello-World 1");
20
+ process.exit(1);
21
+ }
22
+ const issue = await githubRequest(`/repos/${repoPath}/issues/${issueNumber}`);
23
+ console.log(`Issue: #${issue.number} ${issue.title}`);
24
+ console.log("=".repeat(60));
25
+ console.log(`Status: ${issue.state.toUpperCase()}`);
26
+ console.log(`Author: @${issue.user.login}`);
27
+ console.log(`Assignee: ${issue.assignee ? "@" + issue.assignee.login : "Unassigned"}`);
28
+ console.log(`Labels: ${issue.labels.map(l => l.name).join(", ") || "None"}`);
29
+ console.log(`Created: ${issue.created_at.slice(0, 10)}`);
30
+ console.log(`Updated: ${issue.updated_at.slice(0, 10)}`);
31
+ console.log();
32
+ if (issue.body) {
33
+ console.log("Description:");
34
+ console.log("-".repeat(40));
35
+ console.log(issue.body);
36
+ }
37
+ else {
38
+ console.log("No description provided.");
39
+ }
40
+ console.log();
41
+ console.log(`URL: ${issue.html_url}`);
15
42
  }
16
- if (!repoPath || !issueNumber) {
17
- console.log("Usage: npx tsx get_issue.ts <owner/repo> <issue_number>");
18
- console.log("Example: npx tsx get_issue.ts octocat/Hello-World 1");
43
+ main().catch(err => {
44
+ console.error("❌ Error:", err.message);
19
45
  process.exit(1);
20
- }
21
- const issue = await githubRequest(`/repos/${repoPath}/issues/${issueNumber}`);
22
- console.log(`Issue: #${issue.number} ${issue.title}`);
23
- console.log("=".repeat(60));
24
- console.log(`Status: ${issue.state.toUpperCase()}`);
25
- console.log(`Author: @${issue.user.login}`);
26
- console.log(`Assignee: ${issue.assignee ? "@" + issue.assignee.login : "Unassigned"}`);
27
- console.log(`Labels: ${issue.labels.map(l => l.name).join(", ") || "None"}`);
28
- console.log(`Created: ${issue.created_at.slice(0, 10)}`);
29
- console.log(`Updated: ${issue.updated_at.slice(0, 10)}`);
30
- console.log();
31
- if (issue.body) {
32
- console.log("Description:");
33
- console.log("-".repeat(40));
34
- console.log(issue.body);
35
- }
36
- else {
37
- console.log("No description provided.");
38
- }
39
- console.log();
40
- console.log(`URL: ${issue.html_url}`);
46
+ });
@@ -4,20 +4,26 @@
4
4
  * Usage: npx tsx get_repo_info.ts <owner/repo>
5
5
  */
6
6
  import { githubRequest } from "../../../lib/utils.js";
7
- const repoPath = process.argv[2];
8
- if (!repoPath) {
9
- console.log("Usage: npx tsx get_repo_info.ts <owner/repo>");
10
- console.log("Example: npx tsx get_repo_info.ts octocat/Hello-World");
11
- process.exit(1);
7
+ async function main() {
8
+ const repoPath = process.argv[2];
9
+ if (!repoPath) {
10
+ console.log("Usage: npx tsx get_repo_info.ts <owner/repo>");
11
+ console.log("Example: npx tsx get_repo_info.ts octocat/Hello-World");
12
+ process.exit(1);
13
+ }
14
+ const repo = await githubRequest(`/repos/${repoPath}`);
15
+ console.log(`Repository: ${repo.full_name}`);
16
+ console.log("=".repeat(50));
17
+ console.log(`Description: ${repo.description ?? "N/A"}`);
18
+ console.log(`Visibility: ${repo.private ? "Private" : "Public"}`);
19
+ console.log(`Default: ${repo.default_branch}`);
20
+ console.log(`Language: ${repo.language ?? "N/A"}`);
21
+ console.log(`Stars: ${repo.stargazers_count}`);
22
+ console.log(`Forks: ${repo.forks_count}`);
23
+ console.log(`Clone URL: ${repo.clone_url}`);
24
+ console.log(`SSH URL: ${repo.ssh_url}`);
12
25
  }
13
- const repo = await githubRequest(`/repos/${repoPath}`);
14
- console.log(`Repository: ${repo.full_name}`);
15
- console.log("=".repeat(50));
16
- console.log(`Description: ${repo.description ?? "N/A"}`);
17
- console.log(`Visibility: ${repo.private ? "Private" : "Public"}`);
18
- console.log(`Default: ${repo.default_branch}`);
19
- console.log(`Language: ${repo.language ?? "N/A"}`);
20
- console.log(`Stars: ${repo.stargazers_count}`);
21
- console.log(`Forks: ${repo.forks_count}`);
22
- console.log(`Clone URL: ${repo.clone_url}`);
23
- console.log(`SSH URL: ${repo.ssh_url}`);
26
+ main().catch(err => {
27
+ console.error("❌ Error:", err.message);
28
+ process.exit(1);
29
+ });
@@ -4,24 +4,30 @@
4
4
  * Usage: npx tsx list_prs.ts <owner/repo> [state]
5
5
  */
6
6
  import { githubRequest } from "../../../lib/utils.js";
7
- const repoPath = process.argv[2];
8
- const state = process.argv[3] ?? "open";
9
- if (!repoPath) {
10
- console.log("Usage: npx tsx list_prs.ts <owner/repo> [state]");
11
- console.log("States: open, closed, all (default: open)");
12
- process.exit(1);
13
- }
14
- const prs = await githubRequest(`/repos/${repoPath}/pulls?state=${state}&per_page=30`);
15
- console.log(`Pull Requests for ${repoPath} (${state}):`);
16
- console.log("=".repeat(50));
17
- if (prs.length === 0) {
18
- console.log("No pull requests found.");
19
- process.exit(0);
20
- }
21
- for (const pr of prs) {
22
- const draft = pr.draft ? "📝" : "";
23
- console.log(`#${pr.number} ${draft} ${pr.title}`);
24
- console.log(` ${pr.head.ref} ${pr.base.ref} by @${pr.user.login}`);
25
- console.log(` ${pr.html_url}`);
26
- console.log();
7
+ async function main() {
8
+ const repoPath = process.argv[2];
9
+ const state = process.argv[3] ?? "open";
10
+ if (!repoPath) {
11
+ console.log("Usage: npx tsx list_prs.ts <owner/repo> [state]");
12
+ console.log("States: open, closed, all (default: open)");
13
+ process.exit(1);
14
+ }
15
+ const prs = await githubRequest(`/repos/${repoPath}/pulls?state=${state}&per_page=30`);
16
+ console.log(`Pull Requests for ${repoPath} (${state}):`);
17
+ console.log("=".repeat(50));
18
+ if (prs.length === 0) {
19
+ console.log("No pull requests found.");
20
+ process.exit(0);
21
+ }
22
+ for (const pr of prs) {
23
+ const draft = pr.draft ? "📝" : "";
24
+ console.log(`#${pr.number} ${draft} ${pr.title}`);
25
+ console.log(` ${pr.head.ref} → ${pr.base.ref} by @${pr.user.login}`);
26
+ console.log(` ${pr.html_url}`);
27
+ console.log();
28
+ }
27
29
  }
30
+ main().catch(err => {
31
+ console.error("❌ Error:", err.message);
32
+ process.exit(1);
33
+ });
@@ -16,30 +16,36 @@ function extractText(node) {
16
16
  }
17
17
  return "";
18
18
  }
19
- const ticketKey = process.argv[2];
20
- if (!ticketKey) {
21
- console.log("Usage: npx tsx get_ticket.ts <ticket_key>");
22
- console.log("Example: npx tsx get_ticket.ts PROJ-123");
23
- process.exit(1);
24
- }
25
- const { url } = getJiraConfig();
26
- const issue = await jiraRequest(`/rest/api/3/issue/${ticketKey}`);
27
- const { fields } = issue;
28
- console.log(`Ticket: ${issue.key}`);
29
- console.log("=".repeat(60));
30
- console.log(`Summary: ${fields.summary}`);
31
- console.log(`Status: ${fields.status.name}`);
32
- console.log(`Type: ${fields.issuetype.name}`);
33
- console.log(`Priority: ${fields.priority?.name ?? "None"}`);
34
- console.log(`Assignee: ${fields.assignee?.displayName ?? "Unassigned"}`);
35
- console.log(`Reporter: ${fields.reporter?.displayName ?? "Unknown"}`);
36
- console.log(`Created: ${fields.created.slice(0, 10)}`);
37
- console.log(`Updated: ${fields.updated.slice(0, 10)}`);
38
- console.log();
39
- if (fields.description) {
40
- console.log("Description:");
41
- console.log("-".repeat(40));
42
- console.log(extractText(fields.description));
19
+ async function main() {
20
+ const ticketKey = process.argv[2];
21
+ if (!ticketKey) {
22
+ console.log("Usage: npx tsx get_ticket.ts <ticket_key>");
23
+ console.log("Example: npx tsx get_ticket.ts PROJ-123");
24
+ process.exit(1);
25
+ }
26
+ const { url } = getJiraConfig();
27
+ const issue = await jiraRequest(`/rest/api/3/issue/${ticketKey}`);
28
+ const { fields } = issue;
29
+ console.log(`Ticket: ${issue.key}`);
30
+ console.log("=".repeat(60));
31
+ console.log(`Summary: ${fields.summary}`);
32
+ console.log(`Status: ${fields.status.name}`);
33
+ console.log(`Type: ${fields.issuetype.name}`);
34
+ console.log(`Priority: ${fields.priority?.name ?? "None"}`);
35
+ console.log(`Assignee: ${fields.assignee?.displayName ?? "Unassigned"}`);
36
+ console.log(`Reporter: ${fields.reporter?.displayName ?? "Unknown"}`);
37
+ console.log(`Created: ${fields.created.slice(0, 10)}`);
38
+ console.log(`Updated: ${fields.updated.slice(0, 10)}`);
39
+ console.log();
40
+ if (fields.description) {
41
+ console.log("Description:");
42
+ console.log("-".repeat(40));
43
+ console.log(extractText(fields.description));
44
+ }
45
+ console.log();
46
+ console.log(`URL: ${url}/browse/${issue.key}`);
43
47
  }
44
- console.log();
45
- console.log(`URL: ${url}/browse/${issue.key}`);
48
+ main().catch(err => {
49
+ console.error("❌ Error:", err.message);
50
+ process.exit(1);
51
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "brn-toolkit",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "AI Developer Workflow Toolkit - Skills for Claude Code and Copilot CLI",
5
5
  "type": "module",
6
6
  "author": "zfael",
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: brn:git-worktree
2
+ name: brn-toolkit:git-worktree
3
3
  description: |
4
4
  Manage git repositories using the worktree pattern.
5
5
  This allows multiple branches to be checked out simultaneously in sibling directories.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: brn:github
2
+ name: brn-toolkit:github
3
3
  description: |
4
4
  Interact with GitHub API for repository and pull request management.
5
5
  Use when: (1) Listing repositories, (2) Getting repository info, (3) Creating PRs.
@@ -18,42 +18,49 @@ interface Issue {
18
18
  html_url: string;
19
19
  }
20
20
 
21
- let repoPath = process.argv[2];
22
- let issueNumber = process.argv[3];
23
-
24
- // Handle URL-like format: owner/repo/issues/123
25
- if (repoPath && repoPath.includes("/issues/")) {
26
- const parts = repoPath.split("/");
27
- issueNumber = parts.pop()!;
28
- parts.pop(); // remove 'issues'
29
- repoPath = parts.join("/");
30
- }
21
+ async function main() {
22
+ let repoPath = process.argv[2];
23
+ let issueNumber = process.argv[3];
31
24
 
32
- if (!repoPath || !issueNumber) {
33
- console.log("Usage: npx tsx get_issue.ts <owner/repo> <issue_number>");
34
- console.log("Example: npx tsx get_issue.ts octocat/Hello-World 1");
35
- process.exit(1);
36
- }
25
+ // Handle URL-like format: owner/repo/issues/123
26
+ if (repoPath && repoPath.includes("/issues/")) {
27
+ const parts = repoPath.split("/");
28
+ issueNumber = parts.pop()!;
29
+ parts.pop(); // remove 'issues'
30
+ repoPath = parts.join("/");
31
+ }
32
+
33
+ if (!repoPath || !issueNumber) {
34
+ console.log("Usage: npx tsx get_issue.ts <owner/repo> <issue_number>");
35
+ console.log("Example: npx tsx get_issue.ts octocat/Hello-World 1");
36
+ process.exit(1);
37
+ }
37
38
 
38
- const issue = await githubRequest<Issue>(`/repos/${repoPath}/issues/${issueNumber}`);
39
-
40
- console.log(`Issue: #${issue.number} ${issue.title}`);
41
- console.log("=".repeat(60));
42
- console.log(`Status: ${issue.state.toUpperCase()}`);
43
- console.log(`Author: @${issue.user.login}`);
44
- console.log(`Assignee: ${issue.assignee ? "@" + issue.assignee.login : "Unassigned"}`);
45
- console.log(`Labels: ${issue.labels.map(l => l.name).join(", ") || "None"}`);
46
- console.log(`Created: ${issue.created_at.slice(0, 10)}`);
47
- console.log(`Updated: ${issue.updated_at.slice(0, 10)}`);
48
- console.log();
49
-
50
- if (issue.body) {
51
- console.log("Description:");
52
- console.log("-".repeat(40));
53
- console.log(issue.body);
54
- } else {
55
- console.log("No description provided.");
39
+ const issue = await githubRequest<Issue>(`/repos/${repoPath}/issues/${issueNumber}`);
40
+
41
+ console.log(`Issue: #${issue.number} ${issue.title}`);
42
+ console.log("=".repeat(60));
43
+ console.log(`Status: ${issue.state.toUpperCase()}`);
44
+ console.log(`Author: @${issue.user.login}`);
45
+ console.log(`Assignee: ${issue.assignee ? "@" + issue.assignee.login : "Unassigned"}`);
46
+ console.log(`Labels: ${issue.labels.map(l => l.name).join(", ") || "None"}`);
47
+ console.log(`Created: ${issue.created_at.slice(0, 10)}`);
48
+ console.log(`Updated: ${issue.updated_at.slice(0, 10)}`);
49
+ console.log();
50
+
51
+ if (issue.body) {
52
+ console.log("Description:");
53
+ console.log("-".repeat(40));
54
+ console.log(issue.body);
55
+ } else {
56
+ console.log("No description provided.");
57
+ }
58
+
59
+ console.log();
60
+ console.log(`URL: ${issue.html_url}`);
56
61
  }
57
62
 
58
- console.log();
59
- console.log(`URL: ${issue.html_url}`);
63
+ main().catch(err => {
64
+ console.error("❌ Error:", err.message);
65
+ process.exit(1);
66
+ });
@@ -17,23 +17,30 @@ interface Repo {
17
17
  ssh_url: string;
18
18
  }
19
19
 
20
- const repoPath = process.argv[2];
20
+ async function main() {
21
+ const repoPath = process.argv[2];
21
22
 
22
- if (!repoPath) {
23
- console.log("Usage: npx tsx get_repo_info.ts <owner/repo>");
24
- console.log("Example: npx tsx get_repo_info.ts octocat/Hello-World");
25
- process.exit(1);
26
- }
23
+ if (!repoPath) {
24
+ console.log("Usage: npx tsx get_repo_info.ts <owner/repo>");
25
+ console.log("Example: npx tsx get_repo_info.ts octocat/Hello-World");
26
+ process.exit(1);
27
+ }
27
28
 
28
- const repo = await githubRequest<Repo>(`/repos/${repoPath}`);
29
+ const repo = await githubRequest<Repo>(`/repos/${repoPath}`);
29
30
 
30
- console.log(`Repository: ${repo.full_name}`);
31
- console.log("=".repeat(50));
32
- console.log(`Description: ${repo.description ?? "N/A"}`);
33
- console.log(`Visibility: ${repo.private ? "Private" : "Public"}`);
34
- console.log(`Default: ${repo.default_branch}`);
35
- console.log(`Language: ${repo.language ?? "N/A"}`);
36
- console.log(`Stars: ${repo.stargazers_count}`);
37
- console.log(`Forks: ${repo.forks_count}`);
38
- console.log(`Clone URL: ${repo.clone_url}`);
39
- console.log(`SSH URL: ${repo.ssh_url}`);
31
+ console.log(`Repository: ${repo.full_name}`);
32
+ console.log("=".repeat(50));
33
+ console.log(`Description: ${repo.description ?? "N/A"}`);
34
+ console.log(`Visibility: ${repo.private ? "Private" : "Public"}`);
35
+ console.log(`Default: ${repo.default_branch}`);
36
+ console.log(`Language: ${repo.language ?? "N/A"}`);
37
+ console.log(`Stars: ${repo.stargazers_count}`);
38
+ console.log(`Forks: ${repo.forks_count}`);
39
+ console.log(`Clone URL: ${repo.clone_url}`);
40
+ console.log(`SSH URL: ${repo.ssh_url}`);
41
+ }
42
+
43
+ main().catch(err => {
44
+ console.error("❌ Error:", err.message);
45
+ process.exit(1);
46
+ });
@@ -15,31 +15,38 @@ interface PR {
15
15
  user: { login: string };
16
16
  }
17
17
 
18
- const repoPath = process.argv[2];
19
- const state = process.argv[3] ?? "open";
18
+ async function main() {
19
+ const repoPath = process.argv[2];
20
+ const state = process.argv[3] ?? "open";
20
21
 
21
- if (!repoPath) {
22
- console.log("Usage: npx tsx list_prs.ts <owner/repo> [state]");
23
- console.log("States: open, closed, all (default: open)");
24
- process.exit(1);
25
- }
22
+ if (!repoPath) {
23
+ console.log("Usage: npx tsx list_prs.ts <owner/repo> [state]");
24
+ console.log("States: open, closed, all (default: open)");
25
+ process.exit(1);
26
+ }
26
27
 
27
- const prs = await githubRequest<PR[]>(
28
- `/repos/${repoPath}/pulls?state=${state}&per_page=30`
29
- );
28
+ const prs = await githubRequest<PR[]>(
29
+ `/repos/${repoPath}/pulls?state=${state}&per_page=30`
30
+ );
30
31
 
31
- console.log(`Pull Requests for ${repoPath} (${state}):`);
32
- console.log("=".repeat(50));
32
+ console.log(`Pull Requests for ${repoPath} (${state}):`);
33
+ console.log("=".repeat(50));
33
34
 
34
- if (prs.length === 0) {
35
- console.log("No pull requests found.");
36
- process.exit(0);
37
- }
35
+ if (prs.length === 0) {
36
+ console.log("No pull requests found.");
37
+ process.exit(0);
38
+ }
38
39
 
39
- for (const pr of prs) {
40
- const draft = pr.draft ? "📝" : "";
41
- console.log(`#${pr.number} ${draft} ${pr.title}`);
42
- console.log(` ${pr.head.ref} → ${pr.base.ref} by @${pr.user.login}`);
43
- console.log(` ${pr.html_url}`);
44
- console.log();
40
+ for (const pr of prs) {
41
+ const draft = pr.draft ? "📝" : "";
42
+ console.log(`#${pr.number} ${draft} ${pr.title}`);
43
+ console.log(` ${pr.head.ref} → ${pr.base.ref} by @${pr.user.login}`);
44
+ console.log(` ${pr.html_url}`);
45
+ console.log();
46
+ }
45
47
  }
48
+
49
+ main().catch(err => {
50
+ console.error("❌ Error:", err.message);
51
+ process.exit(1);
52
+ });
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: brn:jira
2
+ name: brn-toolkit:jira
3
3
  description: |
4
4
  Interact with JIRA API for ticket management and tracking.
5
5
  Use when: (1) Listing assigned tickets, (2) Getting details, (3) Updating status.
@@ -36,36 +36,43 @@ function extractText(node: unknown): string {
36
36
  return "";
37
37
  }
38
38
 
39
- const ticketKey = process.argv[2];
39
+ async function main() {
40
+ const ticketKey = process.argv[2];
40
41
 
41
- if (!ticketKey) {
42
- console.log("Usage: npx tsx get_ticket.ts <ticket_key>");
43
- console.log("Example: npx tsx get_ticket.ts PROJ-123");
44
- process.exit(1);
45
- }
42
+ if (!ticketKey) {
43
+ console.log("Usage: npx tsx get_ticket.ts <ticket_key>");
44
+ console.log("Example: npx tsx get_ticket.ts PROJ-123");
45
+ process.exit(1);
46
+ }
46
47
 
47
- const { url } = getJiraConfig();
48
- const issue = await jiraRequest<Issue>(`/rest/api/3/issue/${ticketKey}`);
48
+ const { url } = getJiraConfig();
49
+ const issue = await jiraRequest<Issue>(`/rest/api/3/issue/${ticketKey}`);
49
50
 
50
- const { fields } = issue;
51
+ const { fields } = issue;
51
52
 
52
- console.log(`Ticket: ${issue.key}`);
53
- console.log("=".repeat(60));
54
- console.log(`Summary: ${fields.summary}`);
55
- console.log(`Status: ${fields.status.name}`);
56
- console.log(`Type: ${fields.issuetype.name}`);
57
- console.log(`Priority: ${fields.priority?.name ?? "None"}`);
58
- console.log(`Assignee: ${fields.assignee?.displayName ?? "Unassigned"}`);
59
- console.log(`Reporter: ${fields.reporter?.displayName ?? "Unknown"}`);
60
- console.log(`Created: ${fields.created.slice(0, 10)}`);
61
- console.log(`Updated: ${fields.updated.slice(0, 10)}`);
62
- console.log();
53
+ console.log(`Ticket: ${issue.key}`);
54
+ console.log("=".repeat(60));
55
+ console.log(`Summary: ${fields.summary}`);
56
+ console.log(`Status: ${fields.status.name}`);
57
+ console.log(`Type: ${fields.issuetype.name}`);
58
+ console.log(`Priority: ${fields.priority?.name ?? "None"}`);
59
+ console.log(`Assignee: ${fields.assignee?.displayName ?? "Unassigned"}`);
60
+ console.log(`Reporter: ${fields.reporter?.displayName ?? "Unknown"}`);
61
+ console.log(`Created: ${fields.created.slice(0, 10)}`);
62
+ console.log(`Updated: ${fields.updated.slice(0, 10)}`);
63
+ console.log();
63
64
 
64
- if (fields.description) {
65
- console.log("Description:");
66
- console.log("-".repeat(40));
67
- console.log(extractText(fields.description));
65
+ if (fields.description) {
66
+ console.log("Description:");
67
+ console.log("-".repeat(40));
68
+ console.log(extractText(fields.description));
69
+ }
70
+
71
+ console.log();
72
+ console.log(`URL: ${url}/browse/${issue.key}`);
68
73
  }
69
74
 
70
- console.log();
71
- console.log(`URL: ${url}/browse/${issue.key}`);
75
+ main().catch(err => {
76
+ console.error("❌ Error:", err.message);
77
+ process.exit(1);
78
+ });
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: brn:workflow
2
+ name: brn-toolkit:workflow
3
3
  description: |
4
4
  Orchestrate the complete development workflow from ticket to PR.
5
5
  Use when: (1) Starting work on a JIRA ticket, (2) Following the planning-coding-review cycle.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: brn:workspace-manager
2
+ name: brn-toolkit:workspace-manager
3
3
  description: |
4
4
  Manage isolated configurations (tokens, paths) for different contexts.
5
5
  ---