clud-bug 0.6.34 → 0.7.0-rc.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.
Files changed (110) hide show
  1. package/bin/clud-bug.js +10 -1353
  2. package/dist/cli/agents-md.d.ts +16 -0
  3. package/dist/cli/agents-md.d.ts.map +1 -0
  4. package/dist/cli/agents-md.js +226 -0
  5. package/dist/cli/agents-md.js.map +1 -0
  6. package/dist/cli/audit.d.ts +13 -0
  7. package/dist/cli/audit.d.ts.map +1 -0
  8. package/dist/cli/audit.js +90 -0
  9. package/dist/cli/audit.js.map +1 -0
  10. package/dist/cli/branch-protection.d.ts +57 -0
  11. package/dist/cli/branch-protection.d.ts.map +1 -0
  12. package/dist/cli/branch-protection.js +118 -0
  13. package/dist/cli/branch-protection.js.map +1 -0
  14. package/dist/cli/edit-workflow.d.ts +18 -0
  15. package/dist/cli/edit-workflow.d.ts.map +1 -0
  16. package/dist/cli/edit-workflow.js +43 -0
  17. package/dist/cli/edit-workflow.js.map +1 -0
  18. package/dist/cli/index.d.ts +8 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +18 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/main.d.ts +3 -0
  23. package/dist/cli/main.d.ts.map +1 -0
  24. package/dist/cli/main.js +1336 -0
  25. package/dist/cli/main.js.map +1 -0
  26. package/dist/cli/skill-usage.d.ts +109 -0
  27. package/dist/cli/skill-usage.d.ts.map +1 -0
  28. package/dist/cli/skill-usage.js +380 -0
  29. package/dist/cli/skill-usage.js.map +1 -0
  30. package/dist/cli/skills.d.ts +56 -0
  31. package/dist/cli/skills.d.ts.map +1 -0
  32. package/dist/cli/skills.js +292 -0
  33. package/dist/cli/skills.js.map +1 -0
  34. package/dist/cli/update.d.ts +29 -0
  35. package/dist/cli/update.d.ts.map +1 -0
  36. package/dist/cli/update.js +186 -0
  37. package/dist/cli/update.js.map +1 -0
  38. package/dist/cli/usage.d.ts +142 -0
  39. package/dist/cli/usage.d.ts.map +1 -0
  40. package/dist/cli/usage.js +348 -0
  41. package/dist/cli/usage.js.map +1 -0
  42. package/dist/core/audit.d.ts +8 -0
  43. package/dist/core/audit.d.ts.map +1 -0
  44. package/dist/core/audit.js +47 -0
  45. package/dist/core/audit.js.map +1 -0
  46. package/dist/core/detect.d.ts +77 -0
  47. package/dist/core/detect.d.ts.map +1 -0
  48. package/dist/core/detect.js +262 -0
  49. package/dist/core/detect.js.map +1 -0
  50. package/dist/core/index.d.ts +11 -0
  51. package/dist/core/index.d.ts.map +1 -0
  52. package/dist/core/index.js +31 -0
  53. package/dist/core/index.js.map +1 -0
  54. package/dist/core/prompt-builder.d.ts +164 -0
  55. package/dist/core/prompt-builder.d.ts.map +1 -0
  56. package/dist/core/prompt-builder.js +419 -0
  57. package/dist/core/prompt-builder.js.map +1 -0
  58. package/dist/core/prompts.d.ts +9 -0
  59. package/dist/core/prompts.d.ts.map +1 -0
  60. package/dist/core/prompts.js +401 -0
  61. package/dist/core/prompts.js.map +1 -0
  62. package/dist/core/render-review.d.ts +6 -0
  63. package/dist/core/render-review.d.ts.map +1 -0
  64. package/dist/core/render-review.js +219 -0
  65. package/dist/core/render-review.js.map +1 -0
  66. package/dist/core/render.d.ts +13 -0
  67. package/dist/core/render.d.ts.map +1 -0
  68. package/dist/core/render.js +80 -0
  69. package/dist/core/render.js.map +1 -0
  70. package/dist/core/review-schema-zod.d.ts +240 -0
  71. package/dist/core/review-schema-zod.d.ts.map +1 -0
  72. package/dist/core/review-schema-zod.js +218 -0
  73. package/dist/core/review-schema-zod.js.map +1 -0
  74. package/dist/core/review-schema.d.ts +42 -0
  75. package/dist/core/review-schema.d.ts.map +1 -0
  76. package/dist/core/review-schema.js +156 -0
  77. package/dist/core/review-schema.js.map +1 -0
  78. package/dist/core/review-writeback.d.ts +139 -0
  79. package/dist/core/review-writeback.d.ts.map +1 -0
  80. package/dist/core/review-writeback.js +313 -0
  81. package/dist/core/review-writeback.js.map +1 -0
  82. package/dist/core/skills.d.ts +122 -0
  83. package/dist/core/skills.d.ts.map +1 -0
  84. package/dist/core/skills.js +636 -0
  85. package/dist/core/skills.js.map +1 -0
  86. package/package.json +30 -4
  87. package/{lib/agents-md.js → src/cli/agents-md.ts} +25 -14
  88. package/{lib/audit.js → src/cli/audit.ts} +37 -44
  89. package/{lib/branch-protection.js → src/cli/branch-protection.ts} +75 -11
  90. package/{lib/edit-workflow.js → src/cli/edit-workflow.ts} +32 -11
  91. package/src/cli/index.ts +101 -0
  92. package/src/cli/main.ts +1376 -0
  93. package/{lib/skill-usage.js → src/cli/skill-usage.ts} +168 -94
  94. package/src/cli/skills.ts +386 -0
  95. package/{lib/update.js → src/cli/update.ts} +68 -27
  96. package/{lib/usage.js → src/cli/usage.ts} +167 -76
  97. package/src/core/audit.ts +53 -0
  98. package/{lib/detect.js → src/core/detect.ts} +100 -47
  99. package/src/core/index.ts +155 -0
  100. package/src/core/prompt-builder.ts +561 -0
  101. package/{lib/prompts.js → src/core/prompts.ts} +16 -2
  102. package/{lib/render-review.js → src/core/render-review.ts} +57 -25
  103. package/{lib/render.js → src/core/render.ts} +36 -10
  104. package/src/core/review-schema-zod.ts +262 -0
  105. package/{lib/review-schema.js → src/core/review-schema.ts} +68 -5
  106. package/src/core/review-writeback.ts +446 -0
  107. package/{lib/skills.js → src/core/skills.ts} +339 -342
  108. package/templates/workflow-py.yml.tmpl +2 -2
  109. package/templates/workflow-ts.yml.tmpl +2 -2
  110. package/templates/workflow.yml.tmpl +17 -8
@@ -0,0 +1,122 @@
1
+ export declare const API_BASE = "https://skills.sh/api/v1";
2
+ export declare const MAX_SKILLS = 8;
3
+ export interface SkillDescriptor {
4
+ source: string;
5
+ name: string;
6
+ description: string;
7
+ installs: number;
8
+ kind?: string;
9
+ content?: string;
10
+ }
11
+ type RawSkillItem = {
12
+ source?: string;
13
+ repo?: string;
14
+ name?: string;
15
+ slug?: string;
16
+ description?: string;
17
+ summary?: string;
18
+ installs?: number;
19
+ installCount?: number;
20
+ };
21
+ type RawSkillListResponse = RawSkillItem[] | {
22
+ skills?: RawSkillItem[];
23
+ results?: RawSkillItem[];
24
+ } | unknown;
25
+ export declare function normalizeList(data: RawSkillListResponse): SkillDescriptor[];
26
+ interface SkillsClientOptions {
27
+ fetch?: typeof globalThis.fetch;
28
+ base?: string;
29
+ userAgent?: string;
30
+ }
31
+ export declare class SkillsClient {
32
+ #private;
33
+ private readonly fetch;
34
+ private readonly base;
35
+ private readonly userAgent;
36
+ constructor({ fetch, base, userAgent }?: SkillsClientOptions);
37
+ search(terms: string[]): Promise<SkillDescriptor[]>;
38
+ curated(): Promise<SkillDescriptor[]>;
39
+ getContent(source: string, name: string): Promise<string>;
40
+ }
41
+ export interface RankableSkill extends SkillDescriptor {
42
+ kind?: string;
43
+ }
44
+ export declare function rankAndCap(curated: RankableSkill[], searched: RankableSkill[], baseline: RankableSkill[], cap?: number): RankableSkill[];
45
+ export declare function readReviewMode(skillContent: unknown): 'shared' | 'dedicated';
46
+ export interface AppliesToRule {
47
+ paths: string[];
48
+ extensions: string[];
49
+ }
50
+ export declare function readAppliesTo(skillContent: unknown): AppliesToRule | null;
51
+ export declare function appliesToPr(skillContent: unknown, prPaths: unknown): boolean;
52
+ export interface SkillWithOptionalContent {
53
+ content?: unknown;
54
+ [key: string]: unknown;
55
+ }
56
+ export declare function partitionByReviewMode<T extends SkillWithOptionalContent>(skills: T[]): {
57
+ shared: T[];
58
+ dedicated: T[];
59
+ };
60
+ export declare function extractPerSkillLine(comment: unknown, skillName: unknown): string | null;
61
+ export interface PrComment {
62
+ body?: unknown;
63
+ user?: {
64
+ login?: unknown;
65
+ };
66
+ created_at?: unknown;
67
+ }
68
+ export declare function selectReviewHeader(comments: unknown, botLogin: unknown): string | null;
69
+ export declare function extractFirstReviewHeaderLine(body: unknown): string | null;
70
+ export declare function selectReviewBody(comments: unknown, botLogin: unknown): string | null;
71
+ export interface ReviewStatsHeader {
72
+ important: number;
73
+ nit: number;
74
+ preExisting: number;
75
+ }
76
+ export declare function extractStatsHeader(comment: unknown): ReviewStatsHeader | null;
77
+ export declare function isCriticalReviewHeader(headerLine: unknown): boolean;
78
+ export declare function classifyPerSkillOutcome(outcomeLine: unknown): 'failure' | 'success';
79
+ /** Source provenance for an installed skill (see SPEC §1.10). */
80
+ export type SkillSource = 'manual' | 'logmind-derived' | 'skills-sh' | 'clud-bug-baseline';
81
+ export type SkillReviewMode = 'shared' | 'dedicated';
82
+ /**
83
+ * Parsed SKILL.md frontmatter. The App uses this shape (see
84
+ * `clud-bug-app/lib/skills-loader.ts:40`); the prompt builder's
85
+ * `PromptSkillFrontmatter` is a narrower subset (name + description +
86
+ * applies_to) so we keep the full shape here.
87
+ */
88
+ export interface SkillFrontmatter {
89
+ name: string;
90
+ description: string;
91
+ source: SkillSource | string;
92
+ review_mode: SkillReviewMode;
93
+ applies_to?: {
94
+ paths?: string[];
95
+ extensions?: string[];
96
+ };
97
+ }
98
+ /**
99
+ * Minimal YAML frontmatter parser. Handles:
100
+ * - `key: value` (scalar)
101
+ * - `key: [a, b, c]` (inline list)
102
+ * - `key:\n subkey: value` (one-level nesting — applies_to)
103
+ *
104
+ * Throws on malformed input; the App's `loadSkillsFromBaseRef` catches
105
+ * and skips the skill (a bad SKILL.md doesn't take down the whole review).
106
+ *
107
+ * Deliberately NOT a general-purpose YAML parser — SPEC §1.10 fixes the
108
+ * frontmatter schema to a handful of fields. If the schema grows beyond
109
+ * what this hand-rolled parser handles, swap to `js-yaml` — the boundary
110
+ * is this function.
111
+ */
112
+ export declare function parseFrontmatter(raw: string): SkillFrontmatter;
113
+ /**
114
+ * Strip the leading `---\n...\n---\n` from a SKILL.md file. Returns the
115
+ * markdown body (the part the LLM actually reads).
116
+ *
117
+ * Ported from `clud-bug-app/lib/skills-loader.ts:269` so callers don't have
118
+ * to re-implement the regex.
119
+ */
120
+ export declare function stripFrontmatter(raw: string): string;
121
+ export {};
122
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/core/skills.ts"],"names":[],"mappings":"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"}