memory-journal-mcp 7.0.1 → 7.2.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 (124) hide show
  1. package/README.md +75 -66
  2. package/dist/{chunk-6J4RPJ4I.js → chunk-GR4T3SRW.js} +146 -105
  3. package/dist/{chunk-ARLH46WS.js → chunk-IWKLHSPU.js} +89 -3
  4. package/dist/{chunk-2BJHLTYP.js → chunk-ORV7ZZOE.js} +1086 -86
  5. package/dist/cli.js +30 -4
  6. package/dist/github-integration-2TFMXHIJ.js +1 -0
  7. package/dist/index.d.ts +6 -2
  8. package/dist/index.js +3 -3
  9. package/dist/{tools-FFFGXIKN.js → tools-CXR2FEB2.js} +2 -2
  10. package/package.json +2 -2
  11. package/skills/README.md +77 -0
  12. package/skills/autonomous-dev/SKILL.md +56 -0
  13. package/skills/bin/sync.js +50 -0
  14. package/skills/bun/SKILL.md +156 -0
  15. package/skills/github-commander/SKILL.md +1 -1
  16. package/skills/github-commander/workflows/code-quality-audit.md +7 -5
  17. package/skills/github-commander/workflows/issue-triage.md +13 -4
  18. package/skills/github-commander/workflows/milestone-sprint.md +9 -1
  19. package/skills/github-commander/workflows/perf-audit.md +2 -0
  20. package/skills/github-commander/workflows/pr-review.md +9 -3
  21. package/skills/github-commander/workflows/roadmap-kickoff.md +79 -0
  22. package/skills/github-commander/workflows/security-audit.md +3 -3
  23. package/skills/github-commander/workflows/update-deps.md +2 -2
  24. package/skills/gitlab/SKILL.md +115 -0
  25. package/skills/gitlab/package-lock.json +392 -0
  26. package/skills/gitlab/package.json +14 -0
  27. package/skills/gitlab/scripts/gitlab-client.ts +125 -0
  28. package/skills/gitlab/scripts/gitlab-helper.ts +80 -0
  29. package/skills/golang/SKILL.md +54 -0
  30. package/skills/mysql/SKILL.md +30 -0
  31. package/skills/package.json +48 -0
  32. package/skills/playwright-standard/SKILL.md +58 -0
  33. package/skills/playwright-standard/examples/fixtures.ts +66 -0
  34. package/skills/playwright-standard/examples/type-stubs.d.ts +10 -0
  35. package/skills/playwright-standard/references/advanced-scenarios.md +59 -0
  36. package/skills/playwright-standard/references/infrastructure.md +43 -0
  37. package/skills/postgres/SKILL.md +33 -0
  38. package/skills/react-best-practices/AGENTS.md +2883 -0
  39. package/skills/react-best-practices/README.md +127 -0
  40. package/skills/react-best-practices/SKILL.md +138 -0
  41. package/skills/react-best-practices/metadata.json +17 -0
  42. package/skills/react-best-practices/rules/_sections.md +46 -0
  43. package/skills/react-best-practices/rules/_template.md +28 -0
  44. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  45. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  46. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  47. package/skills/react-best-practices/rules/async-api-routes.md +35 -0
  48. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  49. package/skills/react-best-practices/rules/async-dependencies.md +48 -0
  50. package/skills/react-best-practices/rules/async-parallel.md +24 -0
  51. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  52. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  53. package/skills/react-best-practices/rules/bundle-conditional.md +37 -0
  54. package/skills/react-best-practices/rules/bundle-defer-third-party.md +48 -0
  55. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +34 -0
  56. package/skills/react-best-practices/rules/bundle-preload.md +44 -0
  57. package/skills/react-best-practices/rules/client-event-listeners.md +78 -0
  58. package/skills/react-best-practices/rules/client-localstorage-schema.md +74 -0
  59. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  60. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  61. package/skills/react-best-practices/rules/js-batch-dom-css.md +110 -0
  62. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  63. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  64. package/skills/react-best-practices/rules/js-cache-storage.md +68 -0
  65. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  66. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  67. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  68. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  69. package/skills/react-best-practices/rules/js-length-check-first.md +50 -0
  70. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  71. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  72. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  73. package/skills/react-best-practices/rules/rendering-activity.md +24 -0
  74. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +38 -0
  75. package/skills/react-best-practices/rules/rendering-conditional-render.md +32 -0
  76. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  77. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +36 -0
  78. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +72 -0
  79. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +26 -0
  80. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  81. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  82. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  83. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  84. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  85. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  86. package/skills/react-best-practices/rules/rerender-functional-setstate.md +77 -0
  87. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +56 -0
  88. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +36 -0
  89. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  90. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  91. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  92. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  93. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  94. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  95. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  96. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  97. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  98. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  99. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  100. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  101. package/skills/rust/SKILL.md +86 -0
  102. package/skills/shadcn-ui/SKILL.md +72 -0
  103. package/skills/skill-builder/SKILL.md +457 -0
  104. package/skills/skill-builder/checklist.md +65 -0
  105. package/skills/sqlite/SKILL.md +38 -0
  106. package/skills/typescript/SKILL.md +453 -0
  107. package/skills/typescript/assets/eslint-template.js +102 -0
  108. package/skills/typescript/assets/tsconfig-template.json +45 -0
  109. package/skills/typescript/references/enterprise-patterns.md +531 -0
  110. package/skills/typescript/references/generics.md +493 -0
  111. package/skills/typescript/references/nestjs-integration.md +579 -0
  112. package/skills/typescript/references/react-integration.md +616 -0
  113. package/skills/typescript/references/toolchain.md +547 -0
  114. package/skills/typescript/references/type-system.md +481 -0
  115. package/skills/vitest-standard/SKILL.md +82 -0
  116. package/skills/vitest-standard/examples/service-mock.ts +60 -0
  117. package/skills/vitest-standard/examples/tdd-calculator.ts +41 -0
  118. package/skills/vitest-standard/examples/type-stubs.d.ts +18 -0
  119. package/skills/vitest-standard/references/async-and-errors.md +58 -0
  120. package/skills/vitest-standard/references/coverage-and-config.md +53 -0
  121. package/skills/vitest-standard/references/mocking.md +61 -0
  122. package/skills/vitest-standard/references/tdd-patterns.md +60 -0
  123. package/dist/github-integration-PDRLXKGM.js +0 -1
  124. package/skills/github-commander/workflows/full-audit.md +0 -134
@@ -0,0 +1,79 @@
1
+ ---
2
+ description: Translate an approved epic implementation plan into an agent-actionable GitHub Kanban structure via Milestones and tracked Issues.
3
+ ---
4
+
5
+ # /roadmap-kickoff
6
+
7
+ **Objective**: Translate an approved architectural or implementation plan into an agent-actionable GitHub Kanban structure. This establishes an **Agent Coordination Center** where large epics are safely chunked into distinct, trackable threads.
8
+
9
+ ## Context & Rationale
10
+
11
+ When an implementation plan requires multiple agent sessions (e.g., crossing token limits, context constraints, or independent phase checkpoints), we use the GitHub Kanban board + Memory Journal MCP as the synchronization layer.
12
+
13
+ By anchoring every implementation task to a Milestone and throwing it in the Project Backlog:
14
+
15
+ 1. **Context Integrity**: A fresh agent session can pull down `memory://kanban/{project_number}` or `memory://github/milestones` and immediately know what is up next.
16
+ 2. **Parallel Work**: The user can spin up parallel agents operating on distinct project columns/issues.
17
+ 3. **Decoupling**: The central plan remains the source of truth, while GitHub acts as the execution layer.
18
+
19
+ ---
20
+
21
+ ## Prerequisites
22
+
23
+ - An agreed-upon **Implementation Plan** or Epic (e.g. `docs/epic-implementation-plan.md`).
24
+ - A `gh` CLI token verified to possess the `project` scope (req. for adding to Projects v2 columns). If missing, the user runs: `gh auth refresh -s project`.
25
+
26
+ ---
27
+
28
+ ## Workflow Steps
29
+
30
+ ### 1. Establish the Milestone
31
+
32
+ Determine the version tag or epic codename from the implementation plan. Create the milestone to anchor the issues.
33
+
34
+ ```bash
35
+ // turbo
36
+ gh api repos/{owner}/{repo}/milestones -F title="Epic Name (vX.X.X)" -F state="open" -F description="Implementation roadmap..."
37
+ ```
38
+
39
+ ### 2. Actionable Issue Formulation
40
+
41
+ Break the implementation plan down into discrete, atomic tracking issues based on the deliverables/phases.
42
+
43
+ - Each issue body **must** contain enough context (deliverables, acceptance rules, scope) so that an entirely new agent session could pick it up blindly and succeed.
44
+
45
+ ### 3. Generate Tracking Issues
46
+
47
+ Use the explicit Milestone Title (not the ID) to tie all created issues firmly to the Epic.
48
+
49
+ ```bash
50
+ // turbo
51
+ gh issue create --repo {owner}/{repo} --title "Feat: Phase X - ..." --body "Full context..." --milestone "Epic Name (vX.X.X)"
52
+ ```
53
+
54
+ ### 4. Backlog Placement (Crucial)
55
+
56
+ By default, newly created issues might land unmapped in a Project's "No Status" bucket. You must explicitly move them into the `Backlog`.
57
+
58
+ **A. Retrieve Node IDs:**
59
+
60
+ ```bash
61
+ // turbo
62
+ gh project view {project_number} --owner {owner} --format json -q .id
63
+ gh project field-list {project_number} --owner {owner} --format json
64
+ gh project item-list {project_number} --owner {owner} --format json
65
+ ```
66
+
67
+ _Identify the: (1) Project ID, (2) Status Field ID, (3) 'Backlog' Option ID, and (4) The newly created Item Node IDs._
68
+
69
+ **B. Update Item Status:**
70
+
71
+ ```bash
72
+ // turbo
73
+ gh project item-edit --id {ITEM_NODE_ID} --project-id {PROJECT_NODE_ID} --field-id {STATUS_FIELD_ID} --single-select-option-id {BACKLOG_OPTION_ID}
74
+ ```
75
+
76
+ ### 5. Orchestration Handoff
77
+
78
+ - Use the **memory-journal-mcp** server to record a `create_entry` (or `team_create_entry`). Include the milestone link, total breakdown of GitHub issues, and explicitly record the `roadmap_anchored` state, storing the newly registered Project and Board Node IDs.
79
+ - Daisy-chain launch (or notify the human to launch) the Sprint Orchestrator by issuing the command: `"Run /milestone-sprint targeting Milestone <X>"`. The orchestration node will pull directly from the initialized Kanban backlog based on the anchored Project Board metrics.
@@ -102,8 +102,8 @@ Perform static analysis of the source code for common vulnerability patterns:
102
102
  boundary checks
103
103
  4. **Prototype pollution** — unchecked `Object.assign()`, deep merge without
104
104
  prototype guards
105
- 5. **Input validation gaps** — overly permissive schemas, missing validation on
106
- API boundaries
105
+ 5. **Input validation gaps** — blind-casting external payloads without validation,
106
+ overly permissive schemas, missing `.strict()` on API boundaries (ALWAYS use Zod)
107
107
  6. **Authentication bypass** — endpoints accessible without auth checks
108
108
  7. **Error disclosure** — stack traces, database errors, or internal structure
109
109
  leaked in responses
@@ -114,7 +114,7 @@ If GitHub Actions workflows exist (`.github/workflows/`):
114
114
 
115
115
  1. **Action pinning** — verify `uses:` references use SHA commits, not tags
116
116
  2. **Secret handling** — verify secrets use `${{ secrets.* }}`, not inline values
117
- 3. **Security gates** — verify security scans hard-fail (no `continue-on-error: true`)
117
+ 3. **Security gates** — verify security scans (e.g., Docker Scout, Trivy, CodeQL, npm audit) hard-fail on vulnerabilities (no `continue-on-error: true`)
118
118
  4. **Permissions** — verify workflow `permissions` follows least privilege
119
119
 
120
120
  ## Phase 8 — Findings Report
@@ -63,8 +63,8 @@ Run the standard validation gates from SKILL.md:
63
63
 
64
64
  1. **Gate 1**: Lint + Typecheck (`PROJECT_LINT_CMD`, `PROJECT_TYPECHECK_CMD`)
65
65
  2. **Gate 2**: Build (`PROJECT_BUILD_CMD`)
66
- 3. **Gate 3**: Tests (`PROJECT_TEST_CMD`)
67
- 4. **Gate 4**: E2E Tests (`PROJECT_E2E_CMD`)
66
+ 3. **Gate 3**: Tests (`PROJECT_TEST_CMD`) _(Agent Note: Ensure OutputCharacterCount >= 10000 on test execution)_
67
+ 4. **Gate 4**: E2E Tests (`PROJECT_E2E_CMD`) _(Agent Note: Ensure OutputCharacterCount >= 10000)_
68
68
 
69
69
  Journal each gate result. Fix any failures caused by dependency updates.
70
70
 
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: gitlab
3
+ description: |
4
+ Specialized assistant skill for managing repositories and CI/CD in GitLab.
5
+ Activate when the user asks about GitLab projects or repositories, wants to
6
+ see merge requests or pipelines, needs to search code or files, asks about
7
+ CI/CD status or job logs, or wants to browse repository contents.
8
+ Mentions "GitLab", "MR", "pipeline", or "CI/CD".
9
+ ---
10
+
11
+ # GitLab Skill
12
+
13
+ You are a specialized assistant for managing repositories and CI/CD in GitLab. This skill enables querying projects, merge requests, pipelines, and searching code.
14
+
15
+ ## Prerequisites
16
+
17
+ Before using this skill, ensure:
18
+
19
+ - The `~/.claude/.env` file exists with `GITLAB_API_TOKEN` (or it exists in the active workspace's `.env`).
20
+ - A recent version of Bun/Node is installed.
21
+ - Network access to the GitLab instance.
22
+
23
+ ## Skill Structure
24
+
25
+ ```text
26
+ skills/gitlab/
27
+ ├── SKILL.md # This file
28
+ ├── package.json # TS dependencies (@gitbeaker/rest)
29
+ └── scripts/
30
+ ├── gitlab-client.ts # Core GitLab REST API client
31
+ └── gitlab-helper.ts # High-level repository operations
32
+ ```
33
+
34
+ ## Quick Start
35
+
36
+ You can use the helper script via a quick TS sandbox, utilizing `bun` if available, or straight Node via `tsx`.
37
+
38
+ ```typescript
39
+ import { GitLabHelper } from './skills/gitlab/scripts/gitlab-helper.js'
40
+
41
+ const helper = new GitLabHelper()
42
+
43
+ // Verify connection
44
+ const user = await helper.connect()
45
+
46
+ // List projects
47
+ const projects = await helper.listProjects({ membership: true })
48
+
49
+ // Get a specific project
50
+ const project = await helper.getProject('group/project-name')
51
+
52
+ // List open merge requests
53
+ const mrs = await helper.listMergeRequests('group/project', 'opened')
54
+
55
+ // List pipelines
56
+ const pipelines = await helper.listPipelines('group/project', 'success')
57
+ ```
58
+
59
+ ## Common Tasks
60
+
61
+ ### 1. Check Pipeline Status
62
+
63
+ ```typescript
64
+ const pipeline = await helper.getLatestPipeline('group/project', 'main')
65
+ console.log(`Pipeline #${pipeline.id}: ${pipeline.status}`)
66
+
67
+ if (pipeline.status === 'failed') {
68
+ const jobs = await helper.getPipelineJobs('group/project', pipeline.id)
69
+ for (const job of jobs) {
70
+ if (job.status === 'failed') {
71
+ const log = await helper.getJobLog('group/project', job.id)
72
+ console.log(log.substring(log.length - 1000))
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### 2. Review Merge Requests
79
+
80
+ ```typescript
81
+ const mrs = await helper.getAssignedMergeRequests()
82
+ for (const mr of mrs) {
83
+ console.log(`!${mr.iid}: ${mr.title}`)
84
+ console.log(` ${mr.source_branch} -> ${mr.target_branch}`)
85
+ console.log(` Author: ${mr.author.username}`)
86
+ }
87
+ ```
88
+
89
+ ### 3. Browse Repository & Search Code
90
+
91
+ ```typescript
92
+ // List files in a directory
93
+ const files = await helper.listFiles('group/project', 'src/', 'main')
94
+ for (const f of files) {
95
+ console.log(`${f.type === 'tree' ? '[D]' : '[F]'} ${f.name}`)
96
+ }
97
+
98
+ // Search code
99
+ const results = await helper.searchCode('authenticate_user', 'group/project')
100
+ ```
101
+
102
+ ## Error Handling
103
+
104
+ | Error | Cause | Solution |
105
+ | ---------------- | ------------------------ | ------------------------------ |
106
+ | 401 Unauthorized | Invalid token | Check GITLAB_API_TOKEN in .env |
107
+ | 403 Forbidden | No project access | Request project permissions |
108
+ | 404 Not Found | Project/MR doesn't exist | Verify project path |
109
+
110
+ ## Configuration
111
+
112
+ The client reads settings from the environment:
113
+
114
+ - `GITLAB_API_TOKEN` - Personal Access Token (required)
115
+ - `GITLAB_URL` - GitLab instance URL (default: https://gitlab.com)
@@ -0,0 +1,392 @@
1
+ {
2
+ "name": "gitlab-skill",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "gitlab-skill",
9
+ "version": "1.0.0",
10
+ "dependencies": {
11
+ "@gitbeaker/rest": "^40.0.0",
12
+ "dotenv": "^16.4.5"
13
+ },
14
+ "devDependencies": {
15
+ "@types/node": "^20.0.0",
16
+ "typescript": "^5.0.0"
17
+ }
18
+ },
19
+ "node_modules/@gitbeaker/core": {
20
+ "version": "40.6.0",
21
+ "resolved": "https://registry.npmjs.org/@gitbeaker/core/-/core-40.6.0.tgz",
22
+ "integrity": "sha512-tVVm8ZPrS9YCHEcuPV8vD1IcEf9POpdygWo+kPvkK7LcC36EERVcXagb8snEaGgGLfUaVQh8qP4iDZgPnP3YBQ==",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@gitbeaker/requester-utils": "^40.6.0",
26
+ "qs": "^6.12.2",
27
+ "xcase": "^2.0.1"
28
+ },
29
+ "engines": {
30
+ "node": ">=18.20.0"
31
+ }
32
+ },
33
+ "node_modules/@gitbeaker/requester-utils": {
34
+ "version": "40.6.0",
35
+ "resolved": "https://registry.npmjs.org/@gitbeaker/requester-utils/-/requester-utils-40.6.0.tgz",
36
+ "integrity": "sha512-DQu2l3iXtB+8e1Ye2ekeUHABt4mGMRTLtuVWtFqf74sqJnerHNOxVOjPn19qu/nKdvKR3ZLwSRTtPzEsxgcShg==",
37
+ "license": "MIT",
38
+ "dependencies": {
39
+ "picomatch-browser": "^2.2.6",
40
+ "qs": "^6.12.2",
41
+ "rate-limiter-flexible": "^4.0.1",
42
+ "xcase": "^2.0.1"
43
+ },
44
+ "engines": {
45
+ "node": ">=18.20.0"
46
+ }
47
+ },
48
+ "node_modules/@gitbeaker/rest": {
49
+ "version": "40.6.0",
50
+ "resolved": "https://registry.npmjs.org/@gitbeaker/rest/-/rest-40.6.0.tgz",
51
+ "integrity": "sha512-sAwYJclU3NlB/gdxqhH6Hnmy5LWzvW7D3W33eShQEnxMhM0VjnFHPHcgJLQCIux3hMiub1uGtTw1hBJTxDc2mQ==",
52
+ "license": "MIT",
53
+ "dependencies": {
54
+ "@gitbeaker/core": "^40.6.0",
55
+ "@gitbeaker/requester-utils": "^40.6.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=18.20.0"
59
+ }
60
+ },
61
+ "node_modules/@types/node": {
62
+ "version": "20.19.39",
63
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz",
64
+ "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==",
65
+ "dev": true,
66
+ "license": "MIT",
67
+ "dependencies": {
68
+ "undici-types": "~6.21.0"
69
+ }
70
+ },
71
+ "node_modules/call-bind-apply-helpers": {
72
+ "version": "1.0.2",
73
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
74
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
75
+ "license": "MIT",
76
+ "dependencies": {
77
+ "es-errors": "^1.3.0",
78
+ "function-bind": "^1.1.2"
79
+ },
80
+ "engines": {
81
+ "node": ">= 0.4"
82
+ }
83
+ },
84
+ "node_modules/call-bound": {
85
+ "version": "1.0.4",
86
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
87
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
88
+ "license": "MIT",
89
+ "dependencies": {
90
+ "call-bind-apply-helpers": "^1.0.2",
91
+ "get-intrinsic": "^1.3.0"
92
+ },
93
+ "engines": {
94
+ "node": ">= 0.4"
95
+ },
96
+ "funding": {
97
+ "url": "https://github.com/sponsors/ljharb"
98
+ }
99
+ },
100
+ "node_modules/dotenv": {
101
+ "version": "16.6.1",
102
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
103
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
104
+ "license": "BSD-2-Clause",
105
+ "engines": {
106
+ "node": ">=12"
107
+ },
108
+ "funding": {
109
+ "url": "https://dotenvx.com"
110
+ }
111
+ },
112
+ "node_modules/dunder-proto": {
113
+ "version": "1.0.1",
114
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
115
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
116
+ "license": "MIT",
117
+ "dependencies": {
118
+ "call-bind-apply-helpers": "^1.0.1",
119
+ "es-errors": "^1.3.0",
120
+ "gopd": "^1.2.0"
121
+ },
122
+ "engines": {
123
+ "node": ">= 0.4"
124
+ }
125
+ },
126
+ "node_modules/es-define-property": {
127
+ "version": "1.0.1",
128
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
129
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
130
+ "license": "MIT",
131
+ "engines": {
132
+ "node": ">= 0.4"
133
+ }
134
+ },
135
+ "node_modules/es-errors": {
136
+ "version": "1.3.0",
137
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
138
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
139
+ "license": "MIT",
140
+ "engines": {
141
+ "node": ">= 0.4"
142
+ }
143
+ },
144
+ "node_modules/es-object-atoms": {
145
+ "version": "1.1.1",
146
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
147
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
148
+ "license": "MIT",
149
+ "dependencies": {
150
+ "es-errors": "^1.3.0"
151
+ },
152
+ "engines": {
153
+ "node": ">= 0.4"
154
+ }
155
+ },
156
+ "node_modules/function-bind": {
157
+ "version": "1.1.2",
158
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
159
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
160
+ "license": "MIT",
161
+ "funding": {
162
+ "url": "https://github.com/sponsors/ljharb"
163
+ }
164
+ },
165
+ "node_modules/get-intrinsic": {
166
+ "version": "1.3.0",
167
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
168
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
169
+ "license": "MIT",
170
+ "dependencies": {
171
+ "call-bind-apply-helpers": "^1.0.2",
172
+ "es-define-property": "^1.0.1",
173
+ "es-errors": "^1.3.0",
174
+ "es-object-atoms": "^1.1.1",
175
+ "function-bind": "^1.1.2",
176
+ "get-proto": "^1.0.1",
177
+ "gopd": "^1.2.0",
178
+ "has-symbols": "^1.1.0",
179
+ "hasown": "^2.0.2",
180
+ "math-intrinsics": "^1.1.0"
181
+ },
182
+ "engines": {
183
+ "node": ">= 0.4"
184
+ },
185
+ "funding": {
186
+ "url": "https://github.com/sponsors/ljharb"
187
+ }
188
+ },
189
+ "node_modules/get-proto": {
190
+ "version": "1.0.1",
191
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
192
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
193
+ "license": "MIT",
194
+ "dependencies": {
195
+ "dunder-proto": "^1.0.1",
196
+ "es-object-atoms": "^1.0.0"
197
+ },
198
+ "engines": {
199
+ "node": ">= 0.4"
200
+ }
201
+ },
202
+ "node_modules/gopd": {
203
+ "version": "1.2.0",
204
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
205
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
206
+ "license": "MIT",
207
+ "engines": {
208
+ "node": ">= 0.4"
209
+ },
210
+ "funding": {
211
+ "url": "https://github.com/sponsors/ljharb"
212
+ }
213
+ },
214
+ "node_modules/has-symbols": {
215
+ "version": "1.1.0",
216
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
217
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
218
+ "license": "MIT",
219
+ "engines": {
220
+ "node": ">= 0.4"
221
+ },
222
+ "funding": {
223
+ "url": "https://github.com/sponsors/ljharb"
224
+ }
225
+ },
226
+ "node_modules/hasown": {
227
+ "version": "2.0.2",
228
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
229
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
230
+ "license": "MIT",
231
+ "dependencies": {
232
+ "function-bind": "^1.1.2"
233
+ },
234
+ "engines": {
235
+ "node": ">= 0.4"
236
+ }
237
+ },
238
+ "node_modules/math-intrinsics": {
239
+ "version": "1.1.0",
240
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
241
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
242
+ "license": "MIT",
243
+ "engines": {
244
+ "node": ">= 0.4"
245
+ }
246
+ },
247
+ "node_modules/object-inspect": {
248
+ "version": "1.13.4",
249
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
250
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
251
+ "license": "MIT",
252
+ "engines": {
253
+ "node": ">= 0.4"
254
+ },
255
+ "funding": {
256
+ "url": "https://github.com/sponsors/ljharb"
257
+ }
258
+ },
259
+ "node_modules/picomatch-browser": {
260
+ "version": "2.2.6",
261
+ "resolved": "https://registry.npmjs.org/picomatch-browser/-/picomatch-browser-2.2.6.tgz",
262
+ "integrity": "sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w==",
263
+ "license": "MIT",
264
+ "engines": {
265
+ "node": ">=8.6"
266
+ },
267
+ "funding": {
268
+ "url": "https://github.com/sponsors/jonschlinkert"
269
+ }
270
+ },
271
+ "node_modules/qs": {
272
+ "version": "6.15.1",
273
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz",
274
+ "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==",
275
+ "license": "BSD-3-Clause",
276
+ "dependencies": {
277
+ "side-channel": "^1.1.0"
278
+ },
279
+ "engines": {
280
+ "node": ">=0.6"
281
+ },
282
+ "funding": {
283
+ "url": "https://github.com/sponsors/ljharb"
284
+ }
285
+ },
286
+ "node_modules/rate-limiter-flexible": {
287
+ "version": "4.0.1",
288
+ "resolved": "https://registry.npmjs.org/rate-limiter-flexible/-/rate-limiter-flexible-4.0.1.tgz",
289
+ "integrity": "sha512-2/dGHpDFpeA0+755oUkW+EKyklqLS9lu0go9pDsbhqQjZcxfRyJ6LA4JI0+HAdZ2bemD/oOjUeZQB2lCZqXQfQ==",
290
+ "license": "ISC"
291
+ },
292
+ "node_modules/side-channel": {
293
+ "version": "1.1.0",
294
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
295
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
296
+ "license": "MIT",
297
+ "dependencies": {
298
+ "es-errors": "^1.3.0",
299
+ "object-inspect": "^1.13.3",
300
+ "side-channel-list": "^1.0.0",
301
+ "side-channel-map": "^1.0.1",
302
+ "side-channel-weakmap": "^1.0.2"
303
+ },
304
+ "engines": {
305
+ "node": ">= 0.4"
306
+ },
307
+ "funding": {
308
+ "url": "https://github.com/sponsors/ljharb"
309
+ }
310
+ },
311
+ "node_modules/side-channel-list": {
312
+ "version": "1.0.1",
313
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
314
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
315
+ "license": "MIT",
316
+ "dependencies": {
317
+ "es-errors": "^1.3.0",
318
+ "object-inspect": "^1.13.4"
319
+ },
320
+ "engines": {
321
+ "node": ">= 0.4"
322
+ },
323
+ "funding": {
324
+ "url": "https://github.com/sponsors/ljharb"
325
+ }
326
+ },
327
+ "node_modules/side-channel-map": {
328
+ "version": "1.0.1",
329
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
330
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
331
+ "license": "MIT",
332
+ "dependencies": {
333
+ "call-bound": "^1.0.2",
334
+ "es-errors": "^1.3.0",
335
+ "get-intrinsic": "^1.2.5",
336
+ "object-inspect": "^1.13.3"
337
+ },
338
+ "engines": {
339
+ "node": ">= 0.4"
340
+ },
341
+ "funding": {
342
+ "url": "https://github.com/sponsors/ljharb"
343
+ }
344
+ },
345
+ "node_modules/side-channel-weakmap": {
346
+ "version": "1.0.2",
347
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
348
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
349
+ "license": "MIT",
350
+ "dependencies": {
351
+ "call-bound": "^1.0.2",
352
+ "es-errors": "^1.3.0",
353
+ "get-intrinsic": "^1.2.5",
354
+ "object-inspect": "^1.13.3",
355
+ "side-channel-map": "^1.0.1"
356
+ },
357
+ "engines": {
358
+ "node": ">= 0.4"
359
+ },
360
+ "funding": {
361
+ "url": "https://github.com/sponsors/ljharb"
362
+ }
363
+ },
364
+ "node_modules/typescript": {
365
+ "version": "5.9.3",
366
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
367
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
368
+ "dev": true,
369
+ "license": "Apache-2.0",
370
+ "bin": {
371
+ "tsc": "bin/tsc",
372
+ "tsserver": "bin/tsserver"
373
+ },
374
+ "engines": {
375
+ "node": ">=14.17"
376
+ }
377
+ },
378
+ "node_modules/undici-types": {
379
+ "version": "6.21.0",
380
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
381
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
382
+ "dev": true,
383
+ "license": "MIT"
384
+ },
385
+ "node_modules/xcase": {
386
+ "version": "2.0.1",
387
+ "resolved": "https://registry.npmjs.org/xcase/-/xcase-2.0.1.tgz",
388
+ "integrity": "sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==",
389
+ "license": "MIT"
390
+ }
391
+ }
392
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "gitlab-skill",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "dependencies": {
7
+ "@gitbeaker/rest": "^40.0.0",
8
+ "dotenv": "^16.4.5"
9
+ },
10
+ "devDependencies": {
11
+ "@types/node": "^20.0.0",
12
+ "typescript": "^5.0.0"
13
+ }
14
+ }