feat(skills): add jira-workflow, repo-map, docs-map, go-standards

- descriptions state WHEN each skill applies
- jira-workflow ships curl scripts reading TRACKER_URL/JIRA_TOKEN from env, no hardcoded secrets/URLs
- repo-map/docs-map defer values to session corporate context; company specifics left as TODO
- go-standards uses realistic Go defaults, company-specific bits marked TODO
This commit is contained in:
dev
2026-07-16 10:57:00 +03:00
parent fe99b404fa
commit 0725b6b034
7 changed files with 250 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
---
name: jira-workflow
description: Используй, когда нужно работать с корпоративным трекером задач (Jira) — прочитать тикет по ключу, добавить комментарий, приложить ссылку на MR, разобраться в статусах и переходах. Применяй при упоминании ключей задач, «тикет», «задача в трекере», «переведи в статус», а также в командах /bugfix и /feature.
---
# Работа с трекером задач (Jira)
Скилл описывает, как читать и обновлять задачи в нашем трекере через REST API.
## Откуда берутся адрес и токен
**Никогда не хардкодь и не спрашивай их отдельно — они уже есть в окружении.**
- **Базовый адрес трекера** — из переменной окружения `TRACKER_URL`. Если она не задана,
возьми адрес трекера из корпоративного контекста сессии (его инжектит расширение
`company-context`).
- **Токен доступа** — из переменной окружения `JIRA_TOKEN` (personal access token).
- Токен в команды и логи не подставляй в открытом виде — скрипты читают его из окружения сами.
Быстрая проверка окружения:
```bash
: "${TRACKER_URL:?установи TRACKER_URL или возьми адрес из корпоративного контекста}"
: "${JIRA_TOKEN:?установи JIRA_TOKEN (personal access token трекера)}"
```
## Готовые скрипты
Все скрипты лежат в `scripts/` и читают `TRACKER_URL` и `JIRA_TOKEN` из окружения:
- `./scripts/get-issue.sh <KEY>` — получить тикет (поля summary, status, description).
- `./scripts/add-comment.sh <KEY> "<текст>"` — добавить комментарий.
- `./scripts/link-mr.sh <KEY> "<url-MR>" ["<заголовок>"]` — приложить ссылку на MR
(добавляется комментарием со ссылкой; при доступном remote link API — см. TODO в скрипте).
Пример:
```bash
./scripts/get-issue.sh PROJ-123
./scripts/add-comment.sh PROJ-123 "Начал работу, воспроизвёл баг"
./scripts/link-mr.sh PROJ-123 "https://<git-host>/ai/foo/-/merge_requests/42" "Fix PROJ-123"
```
## Соглашения
<!-- TODO: заполнить реальными значениями компании -->
- **Формат ключей задач:** `<!-- TODO: например PROJ-123, префиксы проектов -->`
- **Статусы и переходы:** `<!-- TODO: рабочий процесс, напр. To Do → In Progress → In Review → Done -->`
- **Кто и когда меняет статус:** `<!-- TODO: договорённости команды -->`
- **Что писать в комментарии при старте/готовности:** `<!-- TODO -->`
## Полезное
- ID переходов статуса можно получить через `GET /rest/api/2/issue/<KEY>/transitions`,
выполнить переход — `POST` туда же с `{"transition":{"id":"<id>"}}`.
- Если API возвращает 401/403 — проверь `JIRA_TOKEN` и права. Не логируй сам токен.
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# add-comment.sh <ISSUE_KEY> "<comment text>"
# Adds a comment to a tracker issue.
# Reads TRACKER_URL and JIRA_TOKEN from the environment. No secrets are hardcoded.
set -euo pipefail
KEY="${1:?usage: add-comment.sh <ISSUE_KEY> \"<text>\"}"
TEXT="${2:?usage: add-comment.sh <ISSUE_KEY> \"<text>\"}"
: "${TRACKER_URL:?set TRACKER_URL (or take the tracker address from the session corporate context)}"
: "${JIRA_TOKEN:?set JIRA_TOKEN (tracker personal access token)}"
BASE="${TRACKER_URL%/}"
# Build JSON body safely (jq escapes the text); fall back to a naive body if jq is absent.
if command -v jq >/dev/null 2>&1; then
BODY="$(jq -n --arg b "$TEXT" '{body: $b}')"
else
BODY="{\"body\": \"${TEXT//\"/\\\"}\"}"
fi
curl -fsS -X POST \
-H "Authorization: Bearer ${JIRA_TOKEN}" \
-H "Content-Type: application/json" \
-d "$BODY" \
"${BASE}/rest/api/2/issue/${KEY}/comment" >/dev/null
echo "Comment added to ${KEY}"
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# get-issue.sh <ISSUE_KEY>
# Prints summary, status and description of a tracker issue.
# Reads TRACKER_URL and JIRA_TOKEN from the environment. No secrets are hardcoded.
set -euo pipefail
KEY="${1:?usage: get-issue.sh <ISSUE_KEY>}"
: "${TRACKER_URL:?set TRACKER_URL (or take the tracker address from the session corporate context)}"
: "${JIRA_TOKEN:?set JIRA_TOKEN (tracker personal access token)}"
BASE="${TRACKER_URL%/}"
curl -fsS \
-H "Authorization: Bearer ${JIRA_TOKEN}" \
-H "Accept: application/json" \
"${BASE}/rest/api/2/issue/${KEY}?fields=summary,status,description" \
| { jq -r '"\(.key)\t\(.fields.status.name)\n\(.fields.summary)\n\n\(.fields.description // "")"' 2>/dev/null || cat; }
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env bash
# link-mr.sh <ISSUE_KEY> "<mr-url>" ["<title>"]
# Attaches a merge request link to a tracker issue.
# Default implementation posts a comment with the link (works on any Jira).
# Reads TRACKER_URL and JIRA_TOKEN from the environment. No secrets are hardcoded.
set -euo pipefail
KEY="${1:?usage: link-mr.sh <ISSUE_KEY> \"<mr-url>\" [\"<title>\"]}"
URL="${2:?usage: link-mr.sh <ISSUE_KEY> \"<mr-url>\" [\"<title>\"]}"
TITLE="${3:-Merge request}"
: "${TRACKER_URL:?set TRACKER_URL (or take the tracker address from the session corporate context)}"
: "${JIRA_TOKEN:?set JIRA_TOKEN (tracker personal access token)}"
BASE="${TRACKER_URL%/}"
# Default: comment with the MR link.
COMMENT="${TITLE}: ${URL}"
exec "$(dirname "$0")/add-comment.sh" "$KEY" "$COMMENT"
# TODO: если в компании используется remote issue link API, заменить на:
# POST ${BASE}/rest/api/2/issue/${KEY}/remotelink
# с телом {"object":{"url":"<URL>","title":"<TITLE>"}}