claude-kan 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.
Files changed (94) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/dist/cli/index.d.ts +11 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +70 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/cli/init.d.ts +5 -0
  8. package/dist/cli/init.d.ts.map +1 -0
  9. package/dist/cli/init.js +206 -0
  10. package/dist/cli/init.js.map +1 -0
  11. package/dist/cli.d.ts +6 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +299 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/core/card.d.ts +29 -0
  16. package/dist/core/card.d.ts.map +1 -0
  17. package/dist/core/card.js +188 -0
  18. package/dist/core/card.js.map +1 -0
  19. package/dist/core/conflict.d.ts +13 -0
  20. package/dist/core/conflict.d.ts.map +1 -0
  21. package/dist/core/conflict.js +85 -0
  22. package/dist/core/conflict.js.map +1 -0
  23. package/dist/core/kanban.d.ts +22 -0
  24. package/dist/core/kanban.d.ts.map +1 -0
  25. package/dist/core/kanban.js +53 -0
  26. package/dist/core/kanban.js.map +1 -0
  27. package/dist/core/session.d.ts +21 -0
  28. package/dist/core/session.d.ts.map +1 -0
  29. package/dist/core/session.js +115 -0
  30. package/dist/core/session.js.map +1 -0
  31. package/dist/core/types.d.ts +50 -0
  32. package/dist/core/types.d.ts.map +1 -0
  33. package/dist/core/types.js +6 -0
  34. package/dist/core/types.js.map +1 -0
  35. package/dist/index.d.ts +16 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +32 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/skills/kanboard.d.ts +8 -0
  40. package/dist/skills/kanboard.d.ts.map +1 -0
  41. package/dist/skills/kanboard.js +118 -0
  42. package/dist/skills/kanboard.js.map +1 -0
  43. package/dist/skills/kanboardfull.d.ts +7 -0
  44. package/dist/skills/kanboardfull.d.ts.map +1 -0
  45. package/dist/skills/kanboardfull.js +137 -0
  46. package/dist/skills/kanboardfull.js.map +1 -0
  47. package/dist/skills/kanboardweb.d.ts +11 -0
  48. package/dist/skills/kanboardweb.d.ts.map +1 -0
  49. package/dist/skills/kanboardweb.js +489 -0
  50. package/dist/skills/kanboardweb.js.map +1 -0
  51. package/dist/skills/kancard.d.ts +10 -0
  52. package/dist/skills/kancard.d.ts.map +1 -0
  53. package/dist/skills/kancard.js +169 -0
  54. package/dist/skills/kancard.js.map +1 -0
  55. package/dist/skills/kancreate.d.ts +6 -0
  56. package/dist/skills/kancreate.d.ts.map +1 -0
  57. package/dist/skills/kancreate.js +60 -0
  58. package/dist/skills/kancreate.js.map +1 -0
  59. package/dist/skills/kandoctor.d.ts +17 -0
  60. package/dist/skills/kandoctor.d.ts.map +1 -0
  61. package/dist/skills/kandoctor.js +401 -0
  62. package/dist/skills/kandoctor.js.map +1 -0
  63. package/dist/skills/kanhelp.d.ts +7 -0
  64. package/dist/skills/kanhelp.d.ts.map +1 -0
  65. package/dist/skills/kanhelp.js +194 -0
  66. package/dist/skills/kanhelp.js.map +1 -0
  67. package/dist/skills/kanprune.d.ts +11 -0
  68. package/dist/skills/kanprune.d.ts.map +1 -0
  69. package/dist/skills/kanprune.js +131 -0
  70. package/dist/skills/kanprune.js.map +1 -0
  71. package/dist/skills/kansync.d.ts +7 -0
  72. package/dist/skills/kansync.d.ts.map +1 -0
  73. package/dist/skills/kansync.js +41 -0
  74. package/dist/skills/kansync.js.map +1 -0
  75. package/dist/skills/kanupdate.d.ts +6 -0
  76. package/dist/skills/kanupdate.d.ts.map +1 -0
  77. package/dist/skills/kanupdate.js +74 -0
  78. package/dist/skills/kanupdate.js.map +1 -0
  79. package/dist/skills/session-debug.d.ts +6 -0
  80. package/dist/skills/session-debug.d.ts.map +1 -0
  81. package/dist/skills/session-debug.js +124 -0
  82. package/dist/skills/session-debug.js.map +1 -0
  83. package/dist/templates/skill-templates/kanboard/SKILL.md +26 -0
  84. package/dist/templates/skill-templates/kanboardfull/SKILL.md +28 -0
  85. package/dist/templates/skill-templates/kanboardweb/SKILL.md +137 -0
  86. package/dist/templates/skill-templates/kancard/SKILL.md +70 -0
  87. package/dist/templates/skill-templates/kancreate/SKILL.md +45 -0
  88. package/dist/templates/skill-templates/kandoctor/SKILL.md +58 -0
  89. package/dist/templates/skill-templates/kanhelp/SKILL.md +34 -0
  90. package/dist/templates/skill-templates/kanprune/SKILL.md +102 -0
  91. package/dist/templates/skill-templates/kansync/SKILL.md +21 -0
  92. package/dist/templates/skill-templates/kanupdate/SKILL.md +44 -0
  93. package/dist/templates/skill-templates/session-debug/SKILL.md +25 -0
  94. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanboardfull.js","sourceRoot":"","sources":["../../src/skills/kanboardfull.ts"],"names":[],"mappings":";;AACA;;GAEG;;AAyJM,8CAAiB;AAvJ1B,2CAAgD;AAEhD,eAAe;AACf,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAClD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IACjD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAChD,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,IAAI,SAAS;IAC/C,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;IAC/C,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,IAAI,SAAS;CAC/C,CAAC;AAEF,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,uBAAc,GAAE,CAAC;QAE/B,cAAc;QACd,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YAC7B,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;YACjC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;YACnC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;SAC9B,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAE/D,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YACpE,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CACzC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7B,0BAA0B;QAC1B,MAAM,UAAU,GAAG;YACjB;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK,CAAC,WAAW;aACzB;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,KAAK,CAAC,SAAS;aACvB;YACD;gBACE,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK,CAAC,UAAU;aACxB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,MAAM,CAAC,GAAG;gBACjB,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB;SACF,CAAC;QAEF,sBAAsB;QACtB,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,GAAG,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAEpC,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG;gBACxB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAC9E,CAAC;YAEF,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,uBAAuB;gBACvB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,4BAA4B,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;oBAClC,MAAM,UAAU,GAAG,OAAO,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpD,MAAM,UAAU,GAAG,MAAM;wBACvB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;wBAClC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;oBAErC,2CAA2C;oBAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAEpE,oCAAoC;oBACpC,MAAM,aAAa,GAAG,MAAM;wBAC1B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;wBACpC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,GAAG,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,yCAAyC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE9H,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEtE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,UAAU,GAAG,CAAC,CAAC,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC,CAAC;gBAEvF,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACvB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACpD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB;IAEnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Kanboardweb skill - Generate and open HTML view of Kanban board
4
+ * Works standalone - no server required
5
+ */
6
+ /**
7
+ * Generate and open HTML kanban board
8
+ */
9
+ declare function generateWebBoard(): void;
10
+ export { generateWebBoard };
11
+ //# sourceMappingURL=kanboardweb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanboardweb.d.ts","sourceRoot":"","sources":["../../src/skills/kanboardweb.ts"],"names":[],"mappings":";AACA;;;GAGG;AAscH;;GAEG;AACH,iBAAS,gBAAgB,SAiCxB;AAOD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,489 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * Kanboardweb skill - Generate and open HTML view of Kanban board
5
+ * Works standalone - no server required
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.generateWebBoard = generateWebBoard;
12
+ const fs_1 = __importDefault(require("fs"));
13
+ const path_1 = __importDefault(require("path"));
14
+ const child_process_1 = require("child_process");
15
+ const kanban_1 = require("../core/kanban");
16
+ // ANSI styling
17
+ const colors = {
18
+ cyan: (text) => `\x1b[36m${text}\x1b[0m`,
19
+ green: (text) => `\x1b[32m${text}\x1b[0m`,
20
+ dim: (text) => `\x1b[2m${text}\x1b[0m`,
21
+ bold: (text) => `\x1b[1m${text}\x1b[0m`
22
+ };
23
+ /**
24
+ * Generate complete HTML with embedded CSS and data
25
+ */
26
+ function generateHTML() {
27
+ const board = (0, kanban_1.getKanbanBoard)();
28
+ // Count cards
29
+ const counts = {
30
+ pending: board.pending.length,
31
+ in_progress: board.in_progress.length,
32
+ completed: board.completed.length,
33
+ parkinglot: board.parkinglot.length,
34
+ deleted: board.deleted.length
35
+ };
36
+ const total = Object.values(counts).reduce((a, b) => a + b, 0);
37
+ // Prepare columns data
38
+ const columns = [
39
+ {
40
+ id: 'pending',
41
+ name: 'PENDING',
42
+ icon: '[ ]',
43
+ color: '#2B4C7E',
44
+ borderColor: '#567EBB',
45
+ cards: board.pending,
46
+ hidden: false
47
+ },
48
+ {
49
+ id: 'in_progress',
50
+ name: 'IN PROGRESS',
51
+ icon: '[ā–¶]',
52
+ color: '#D97706',
53
+ borderColor: '#F59E0B',
54
+ cards: board.in_progress,
55
+ hidden: false
56
+ },
57
+ {
58
+ id: 'completed',
59
+ name: 'COMPLETED',
60
+ icon: '[āœ“]',
61
+ color: '#047857',
62
+ borderColor: '#10B981',
63
+ cards: board.completed,
64
+ hidden: false
65
+ },
66
+ {
67
+ id: 'parkinglot',
68
+ name: 'PARKING LOT',
69
+ icon: '[ā—¼]',
70
+ color: '#6B7280',
71
+ borderColor: '#9CA3AF',
72
+ cards: board.parkinglot,
73
+ hidden: true
74
+ },
75
+ {
76
+ id: 'deleted',
77
+ name: 'DELETED',
78
+ icon: '[āœ—]',
79
+ color: '#B91C1C',
80
+ borderColor: '#EF4444',
81
+ cards: board.deleted,
82
+ hidden: true
83
+ }
84
+ ];
85
+ const timestamp = new Date().toLocaleString();
86
+ return `<!DOCTYPE html>
87
+ <html lang="en">
88
+ <head>
89
+ <meta charset="UTF-8">
90
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
91
+ <title>Kanban Board</title>
92
+ <link rel="preconnect" href="https://fonts.googleapis.com">
93
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
94
+ <link href="https://fonts.googleapis.com/css2?family=Courier+Prime:wght@400;700&family=Special+Elite&display=swap" rel="stylesheet">
95
+ <style>
96
+ * {
97
+ margin: 0;
98
+ padding: 0;
99
+ box-sizing: border-box;
100
+ }
101
+
102
+ body {
103
+ font-family: 'Courier Prime', 'Courier New', monospace;
104
+ background: #F5F5F0;
105
+ min-height: 100vh;
106
+ padding: 40px 20px;
107
+ color: #1a1a1a;
108
+ }
109
+
110
+ .container {
111
+ max-width: 1600px;
112
+ margin: 0 auto;
113
+ }
114
+
115
+ .header {
116
+ margin-bottom: 32px;
117
+ border-bottom: 3px solid #1a1a1a;
118
+ padding-bottom: 20px;
119
+ }
120
+
121
+ .header h1 {
122
+ font-family: 'Special Elite', 'Courier Prime', monospace;
123
+ font-size: 36px;
124
+ color: #1a1a1a;
125
+ letter-spacing: 2px;
126
+ margin-bottom: 16px;
127
+ text-transform: uppercase;
128
+ }
129
+
130
+ .controls {
131
+ display: flex;
132
+ gap: 24px;
133
+ margin-top: 16px;
134
+ flex-wrap: wrap;
135
+ }
136
+
137
+ .checkbox-group {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 8px;
141
+ font-size: 14px;
142
+ cursor: pointer;
143
+ user-select: none;
144
+ }
145
+
146
+ .checkbox-group input[type="checkbox"] {
147
+ width: 18px;
148
+ height: 18px;
149
+ cursor: pointer;
150
+ border: 2px solid #1a1a1a;
151
+ }
152
+
153
+ .stats {
154
+ display: flex;
155
+ gap: 20px;
156
+ flex-wrap: wrap;
157
+ margin-top: 16px;
158
+ font-size: 13px;
159
+ letter-spacing: 0.5px;
160
+ }
161
+
162
+ .stat {
163
+ padding: 0;
164
+ display: flex;
165
+ align-items: center;
166
+ gap: 6px;
167
+ }
168
+
169
+ .stat-label {
170
+ font-weight: 700;
171
+ }
172
+
173
+ .board {
174
+ display: grid;
175
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
176
+ gap: 24px;
177
+ margin-bottom: 40px;
178
+ }
179
+
180
+ .column {
181
+ border: 3px solid;
182
+ padding: 20px;
183
+ min-height: 250px;
184
+ transition: opacity 0.3s ease;
185
+ }
186
+
187
+ .column.hidden {
188
+ display: none;
189
+ }
190
+
191
+ .column-pending {
192
+ border-color: #567EBB;
193
+ background: #EBF3FF;
194
+ }
195
+
196
+ .column-in_progress {
197
+ border-color: #F59E0B;
198
+ background: #FFF7ED;
199
+ }
200
+
201
+ .column-completed {
202
+ border-color: #10B981;
203
+ background: #ECFDF5;
204
+ }
205
+
206
+ .column-parkinglot {
207
+ border-color: #9CA3AF;
208
+ background: #F9FAFB;
209
+ }
210
+
211
+ .column-deleted {
212
+ border-color: #EF4444;
213
+ background: #FEF2F2;
214
+ }
215
+
216
+ .column-header {
217
+ display: flex;
218
+ align-items: center;
219
+ justify-content: space-between;
220
+ margin-bottom: 20px;
221
+ padding-bottom: 12px;
222
+ border-bottom: 2px dashed #1a1a1a;
223
+ }
224
+
225
+ .column-title {
226
+ display: flex;
227
+ align-items: center;
228
+ gap: 10px;
229
+ font-size: 16px;
230
+ font-weight: 700;
231
+ text-transform: uppercase;
232
+ letter-spacing: 1.5px;
233
+ font-family: 'Special Elite', monospace;
234
+ }
235
+
236
+ .column-count {
237
+ background: #1a1a1a;
238
+ color: #F5F5F0;
239
+ padding: 4px 12px;
240
+ font-size: 12px;
241
+ font-weight: 700;
242
+ letter-spacing: 1px;
243
+ }
244
+
245
+ .card {
246
+ background: #FFFFFF;
247
+ border: 2px solid #1a1a1a;
248
+ padding: 16px;
249
+ margin-bottom: 12px;
250
+ cursor: pointer;
251
+ transition: all 0.15s ease;
252
+ box-shadow: 3px 3px 0 rgba(0,0,0,0.1);
253
+ }
254
+
255
+ .card:hover {
256
+ transform: translate(-2px, -2px);
257
+ box-shadow: 5px 5px 0 rgba(0,0,0,0.2);
258
+ }
259
+
260
+ .card-title {
261
+ font-size: 15px;
262
+ font-weight: 700;
263
+ color: #1a1a1a;
264
+ margin-bottom: 10px;
265
+ line-height: 1.4;
266
+ letter-spacing: 0.3px;
267
+ }
268
+
269
+ .card-meta {
270
+ font-size: 12px;
271
+ color: #666;
272
+ display: flex;
273
+ flex-direction: column;
274
+ gap: 4px;
275
+ letter-spacing: 0.5px;
276
+ }
277
+
278
+ .card-session {
279
+ background: #E5E5E0;
280
+ padding: 3px 8px;
281
+ display: inline-block;
282
+ border: 1px solid #1a1a1a;
283
+ }
284
+
285
+ .empty-state {
286
+ text-align: center;
287
+ padding: 40px 16px;
288
+ color: #999;
289
+ font-size: 14px;
290
+ font-style: italic;
291
+ letter-spacing: 0.5px;
292
+ }
293
+
294
+ .footer {
295
+ border-top: 3px solid #1a1a1a;
296
+ padding-top: 20px;
297
+ text-align: center;
298
+ font-size: 12px;
299
+ color: #666;
300
+ letter-spacing: 0.5px;
301
+ }
302
+
303
+ .refresh-notice {
304
+ margin-top: 8px;
305
+ font-style: italic;
306
+ }
307
+
308
+ @media (max-width: 768px) {
309
+ body {
310
+ padding: 20px 12px;
311
+ }
312
+
313
+ .header h1 {
314
+ font-size: 24px;
315
+ }
316
+
317
+ .board {
318
+ grid-template-columns: 1fr;
319
+ }
320
+
321
+ .controls {
322
+ flex-direction: column;
323
+ align-items: flex-start;
324
+ }
325
+ }
326
+ </style>
327
+ </head>
328
+ <body>
329
+ <div class="container">
330
+ <div class="header">
331
+ <h1>K_BOARD</h1>
332
+
333
+ <div class="controls">
334
+ <label class="checkbox-group">
335
+ <input type="checkbox" id="toggle-parkinglot" onchange="toggleColumn('parkinglot')">
336
+ <span>SHOW PARKING LOT</span>
337
+ </label>
338
+ <label class="checkbox-group">
339
+ <input type="checkbox" id="toggle-deleted" onchange="toggleColumn('deleted')">
340
+ <span>SHOW DELETED</span>
341
+ </label>
342
+ </div>
343
+
344
+ <div class="stats">
345
+ ${columns.map(col => `
346
+ <div class="stat" style="color: ${col.color};">
347
+ <span class="stat-label">${col.icon} ${col.name}:</span>
348
+ <span>${col.cards.length}</span>
349
+ </div>
350
+ `).join('')}
351
+ <div class="stat" style="color: #1a1a1a;">
352
+ <span class="stat-label">TOTAL:</span>
353
+ <span>${total}</span>
354
+ </div>
355
+ </div>
356
+ </div>
357
+
358
+ <div class="board">
359
+ ${columns.map(col => `
360
+ <div class="column column-${col.id} ${col.hidden ? 'hidden' : ''}" id="column-${col.id}">
361
+ <div class="column-header">
362
+ <div class="column-title" style="color: ${col.color};">
363
+ <span>${col.icon}</span>
364
+ <span>${col.name}</span>
365
+ </div>
366
+ <div class="column-count">${col.cards.length}</div>
367
+ </div>
368
+
369
+ ${col.cards.length === 0 ? `
370
+ <div class="empty-state">
371
+ -- no cards --
372
+ </div>
373
+ ` : col.cards.map(card => `
374
+ <div class="card">
375
+ <div class="card-title">${escapeHtml(card.title)}</div>
376
+ <div class="card-meta">
377
+ <span>session: <span class="card-session">${card.session.slice(0, 8)}</span></span>
378
+ ${card.taskId ? `<span>task_id: ${card.taskId.split('-').pop()}</span>` : ''}
379
+ </div>
380
+ </div>
381
+ `).join('')}
382
+ </div>
383
+ `).join('')}
384
+ </div>
385
+
386
+ <div class="footer">
387
+ <div>Generated: ${timestamp}</div>
388
+ <div class="refresh-notice">Run <code>/kanboardweb</code> again to refresh</div>
389
+ </div>
390
+ </div>
391
+
392
+ <script>
393
+ // Toggle column visibility
394
+ function toggleColumn(columnId) {
395
+ const column = document.getElementById('column-' + columnId);
396
+ const checkbox = document.getElementById('toggle-' + columnId);
397
+ if (column && checkbox) {
398
+ if (checkbox.checked) {
399
+ column.classList.remove('hidden');
400
+ } else {
401
+ column.classList.add('hidden');
402
+ }
403
+ }
404
+ }
405
+
406
+ // Add click handlers for cards
407
+ document.querySelectorAll('.card').forEach(card => {
408
+ card.addEventListener('click', function() {
409
+ this.style.background = '#FFFFCC';
410
+ setTimeout(() => {
411
+ this.style.background = '#FFFFFF';
412
+ }, 200);
413
+ });
414
+ });
415
+ </script>
416
+ </body>
417
+ </html>`;
418
+ }
419
+ /**
420
+ * Escape HTML to prevent XSS
421
+ */
422
+ function escapeHtml(text) {
423
+ const map = {
424
+ '&': '&amp;',
425
+ '<': '&lt;',
426
+ '>': '&gt;',
427
+ '"': '&quot;',
428
+ "'": '&#039;'
429
+ };
430
+ return text.replace(/[&<>"']/g, m => map[m]);
431
+ }
432
+ /**
433
+ * Open file in default browser (cross-platform)
434
+ */
435
+ function openInBrowser(filePath) {
436
+ const platform = process.platform;
437
+ let command;
438
+ if (platform === 'darwin') {
439
+ command = `open "${filePath}"`;
440
+ }
441
+ else if (platform === 'win32') {
442
+ command = `start "" "${filePath}"`;
443
+ }
444
+ else {
445
+ // Linux and others
446
+ command = `xdg-open "${filePath}"`;
447
+ }
448
+ (0, child_process_1.exec)(command, (error) => {
449
+ if (error) {
450
+ console.error('Could not open browser automatically.');
451
+ console.log(`Please open manually: ${filePath}`);
452
+ }
453
+ });
454
+ }
455
+ /**
456
+ * Generate and open HTML kanban board
457
+ */
458
+ function generateWebBoard() {
459
+ try {
460
+ console.log(colors.bold(colors.cyan('\n🌐 Generating Kanban Board HTML...\n')));
461
+ // Generate HTML
462
+ const html = generateHTML();
463
+ // Write to file
464
+ const outputDir = path_1.default.join('.kanhelper');
465
+ const outputPath = path_1.default.join(outputDir, 'kb.html');
466
+ fs_1.default.mkdirSync(outputDir, { recursive: true });
467
+ fs_1.default.writeFileSync(outputPath, html);
468
+ const absolutePath = path_1.default.resolve(outputPath);
469
+ console.log(colors.green('āœ… HTML generated successfully!'));
470
+ console.log(colors.dim(` File: ${outputPath}`));
471
+ console.log('');
472
+ console.log(colors.bold('šŸš€ Opening in browser...'));
473
+ console.log('');
474
+ // Open in browser
475
+ openInBrowser(absolutePath);
476
+ console.log(colors.dim('šŸ’” Tip: Run /kanboardweb again to refresh the view'));
477
+ console.log('');
478
+ }
479
+ catch (error) {
480
+ const message = error instanceof Error ? error.message : String(error);
481
+ console.error('Error generating web board:', message);
482
+ process.exit(1);
483
+ }
484
+ }
485
+ // Run if executed directly
486
+ if (require.main === module) {
487
+ generateWebBoard();
488
+ }
489
+ //# sourceMappingURL=kanboardweb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kanboardweb.js","sourceRoot":"","sources":["../../src/skills/kanboardweb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Kancard skill - Query and display individual card details
4
+ */
5
+ /**
6
+ * Display detailed card information
7
+ */
8
+ declare function displayCard(query: string): void;
9
+ export { displayCard };
10
+ //# sourceMappingURL=kancard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kancard.d.ts","sourceRoot":"","sources":["../../src/skills/kancard.ts"],"names":[],"mappings":";AACA;;GAEG;AAmFH;;GAEG;AACH,iBAAS,WAAW,CAAC,KAAK,EAAE,MAAM,QAyFjC;AAiBD,OAAO,EAAE,WAAW,EAAE,CAAC"}