A VS Code extension that bundles the day-to-day work with GitLab and Claude Code:
time tracking on issues, a GitLab MCP server for Claude Code, management of
skills & agents, and AI-assisted code reviews — all sharing one GitLab token and
a connection lamp in the status bar.

Contents
What can the extension do?
| Area |
In short |
| ⏱️ Time tracking |
Timer or calendar entries on GitLab issues, buffered locally, synced to GitLab timelogs on demand. Plus purely local issues with no GitLab link. |
| 🔌 GitLab MCP |
One click enables the GitLab MCP server for Claude Code (CLI in the terminal) — token kept secure, never written to disk in clear text. |
| 🧩 Skills & agents |
A dedicated page to enable/disable Claude Code skills and agents (bundled templates + your own files). |
| 🔍 Code reviews |
Starts a Claude review of a merge request or the local branch — results in chat, as draft notes, or posted directly to the MR. |
Quick start
- Set the GitLab URL:
Settings → actifsourceTools.gitlabUrl, e.g. https://gitlab.example.com.
- Set the token: Command Palette (
Ctrl+Shift+P) → Actifsource Tools: Set Personal Access Token (scope api, see below).
- Open the panel:
Actifsource Tools: Open (or click the green dot in the status bar).
- (optional) Enable MCP for Claude:
Actifsource Tools: Enable GitLab MCP for Claude Code.

GitLab personal access token
The extension both reads and writes to GitLab (creating/deleting timelogs, posting
review comments). Therefore:
- Scope:
api (full read/write). read_api is not enough once times are synced
or reviews are posted.
- Account role: at least Reporter (issues + time + comments), Developer
recommended for the full MR review workflow.
- The token is stored only in
vscode.SecretStorage (on Windows via DPAPI) — never
in settings.json or ~/.claude.json.
Create it in GitLab: User Settings → Access Tokens → scope api.
Features in detail
1. Time tracking
- Issue list with sections: pinned, GitLab — assigned to me, local, and
optionally project/group (see
defaultProjectId / defaultGroupId).
- Full-text search across GitLab issues; search by ticket id (
#258 or 258).
- Exactly one active timer that survives webview and VS Code restarts.
- Calendar (day/week/month): create/edit entries via context menu, move them by drag;
24-hour axis.
- Traffic-light dot per entry: 🔴 not synced · 🟡 changed, not synced yet · 🟢 synced.
- Sync sends each booking as a GitLab timelog (GraphQL
timelogCreate /
timelogDelete) — one entry = one timelog, with no negative correction rows in the
time-tracking report. Editing the same entry multiple times is collapsed into a single
sync (no duplicates).
- Local issues (
L:<n>): purely local, machine-global issues with no GitLab link —
bookable in the calendar, pinnable; "synced" into a global file.
- View another user (read-only): shows their assigned issues and their logged time
(reconstructed from GitLab) — no editing/booking.



2. GitLab MCP for Claude Code
Enables the GitLab MCP server (@zereight/mcp-gitlab) for Claude Code in the integrated
terminal — so Claude can work with GitLab directly (issues, MRs, comments …).
- The command
Actifsource Tools: Enable GitLab MCP for Claude Code writes a gitlab
entry into the user-global ~/.claude.json and injects the token as an environment
variable into new integrated terminals.
- Reuse: uses the same token and URL as time tracking — no second token needed.
GITLAB_API_URL is derived from gitlabUrl.
- Secure:
~/.claude.json only contains the reference ${GITLAB_PAT}, never the value.
- After enabling: open a new integrated terminal, start
claude, run /mcp.
Actifsource Tools: GitLab MCP Status shows a checklist (token, entry, npx on PATH …).
3. Manage skills & agents
A dedicated page (Actifsource Tools: Manage Skills & Agents) to enable/disable Claude
Code skills and agents — bundled templates and your own files under ~/.claude/.
- Enable moves/writes into the live directory (
~/.claude/agents/<name>.md or
~/.claude/skills/<name>/) that Claude Code scans at session start.
- Disable moves it into a disabled store — never deleted, fully reversible.
- Visible before enabling: an agent's requested tools/model, whether a skill ships
scripts/, and an origin badge (bundled/user).
- A hand-authored file of the same name is never overwritten (conflict is shown).
- With
actifsourceTools.autoUpdateAgentAndSkill (default on), managed copies are
refreshed from the latest bundled version at startup.

4. Code reviews
The page Actifsource Tools: Review a Merge Request starts a Claude review in a new
integrated terminal — two clearly separated variants:
- 🔵 Merge Request (
review-gitlab-mr): MR URL + focus, then Review in Chat,
Draft for Review (draft notes, before submitting in GitLab), or Post to GitLab.
- 🟣 Local (
review-local): reviews the current branch against main, results in chat
only — nothing is posted, no token/MCP required.
The required review agent must be enabled; if it is not, the page blocks the review and
offers to enable it. MR reviews additionally require MCP and a token to be ready.

Status bar
On the left the Tracker item (active timer / pinned issues to start one), next to it
"● Actifsource Tools" with a connection lamp:
- ⚪ grey = not configured · 🔴 red = connection failed · 🟢 green = connected.
- Clicking the dot opens a menu: Time Tracker page, Review, Skills & Agents, test
connection, set token, settings.
Settings
All under the prefix actifsourceTools.:
| Setting |
Type |
Default |
Purpose |
gitlabUrl |
string |
"" |
Base URL of the GitLab instance, e.g. https://gitlab.example.com. |
defaultProjectId |
number | null |
null |
Additionally load all open issues of this project. |
defaultGroupId |
number | null |
null |
Additionally load all open issues of this group. |
showAssignedToMe |
boolean |
true |
Show issues assigned to me. |
roundTo |
1 | 5 | 15 | 30 |
1 |
Round time slots to N minutes on sync. |
weekStartsOn |
monday | sunday |
monday |
First day of the week in the calendar. |
mcp.enabled |
boolean |
false |
Register the GitLab MCP server for Claude Code. |
mcp.readOnly |
boolean |
false |
Run the MCP server in read-only mode. |
autoUpdateAgentAndSkill |
boolean |
true |
Update managed skills/agents from the bundle at startup. |
Commands
All in the Command Palette under "Actifsource Tools: …":
| Command |
Effect |
Open |
Open the Time Tracker panel. |
Set Personal Access Token |
Store the GitLab token in SecretStorage. |
Clear Personal Access Token |
Remove the token. |
Test Connection |
Check the connection to GitLab (updates the lamp). |
Refresh Issues |
Reload the issue list. |
Sync Pending Changes |
Sync pending bookings to GitLab. |
Stop Timer |
Stop the active timer. |
Enable / Disable GitLab MCP for Claude Code |
Write/remove the MCP entry. |
GitLab MCP Status |
Show the status checklist. |
Manage Skills & Agents |
Open the skills/agents page. |
Review a Merge Request |
Open the review page (MR + local). |
Requirements
- VS Code ≥ 1.85.
- GitLab (self-hosted or gitlab.com) with a PAT (scope
api).
- For MCP/reviews: Claude Code (CLI) installed and on
PATH, plus Node.js/npx
(the MCP server runs via npx @zereight/mcp-gitlab).
| |