auth
무료Authentication and authorization patterns for Rossoctl services
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Test-driven development workflows for Rossoctl - CI, HyperShift, and Kind
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
실행 점수 미검증
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
flowchart TD
START(["/tdd"]) --> INPUT{"What input?"}
INPUT -->|GH Issue URL| ISSUE[Flow 1: Issue-First]
INPUT -->|GH PR URL| PR[Flow 2: PR-First]
INPUT -->|Local doc/task| LOCAL[Flow 3: Local-First]
INPUT -->|Nothing| DETECT{Detect cluster}
ISSUE --> ANALYZE[Read issue + conversation]
ANALYZE --> CHECKPR{"Existing PR?"}
CHECKPR -->|Own PR| PR
CHECKPR -->|Other's PR| FORK{Fork or comment?}
CHECKPR -->|No PR| RESEARCH["rca + plan + post to issue"]:::rca
FORK --> RESEARCH
RESEARCH --> WORKTREE["git:worktree"]:::git
WORKTREE --> TDDCI
PR --> RCACI["rca:ci"]:::rca
RCACI --> TDDCI["tdd:ci"]:::tdd
TDDCI -->|"3+ failures"| HS["tdd:hypershift"]:::tdd
TDDCI -->|CI green| REVIEWS[Handle PR reviews]
LOCAL --> KIND["tdd:kind"]:::tdd
KIND -->|Tests pass| MOVETOPR[Create issue + PR]
MOVETOPR --> PR
DETECT -->|HyperShift| HS
DETECT -->|Kind| KIND
DETECT -->|None| TDDCI
HS -->|CI green| REVIEWS
REVIEWS -->|Changes needed| TDDCI
REVIEWS -->|Approved| DONE([Merged])
classDef tdd fill:#4CAF50,stroke:#333,color:white
classDef rca fill:#FF5722,stroke:#333,color:white
classDef git fill:#FF9800,stroke:#333,color:white
Follow this diagram as the workflow.
Test-driven development workflows for iterative Rossoctl development.
When /tdd is invoked, determine the entry point:
What was provided?
│
├─ GitHub issue URL → Flow 1: Issue-First
├─ GitHub PR URL → Flow 2: PR-First
├─ Local doc/task → Flow 3: Local-First
└─ Nothing → Detect cluster, pick tdd:ci/kind/hypershift
Debug mode is only activated when /tdd is invoked as /tdd --debug <issue|PR|doc>.
When active, the workflow visually tracks progress through the diagram, highlighting the current node and showing edge traversal counts.
mkdir -p /tmp/rossoctl/tdd/
/tmp/rossoctl/tdd/tdd-debug-state.json automatically.Run the debug diagram script to update the visual:
python3 .claude/scripts/tdd-debug-diagram.py \
--template .claude/skills/tdd/tdd-workflow.mmd \
--current-node <NODE_ID> \
--edge-counts '{"<FROM>-><TO>": <count>, ...}' \
--output /tmp/rossoctl/tdd/debug-diagram.mmd
Node IDs match the diagram: START, INPUT, ISSUE, PR, LOCAL, DETECT, ANALYZE, CHECKPR, FORK, RESEARCH, WORKTREE, RCACI, TDDCI, HS, KIND, MOVETOPR, REVIEWS, DONE.
The script maintains /tmp/rossoctl/tdd/tdd-debug-state.json with:
current_node - where in the workflow we are nowedge_counts - how many times each edge has been traversedhistory - ordered list of nodes visited with timestampsWhen debug mode is active and the workflow enters a sub-skill (tdd:ci, tdd:kind, tdd:hypershift), pass the debug flag through:
.mmd template (e.g., .claude/skills/tdd:ci/tdd-ci-workflow.mmd)/tmp/rossoctl/tdd/tdd-debug-state.json with the sub-skill's node transitionstdd-workflow.mmdAfter each script invocation, report to the user:
/tdd <GH issue URL>Read the issue body and full conversation thread to understand:
gh pr list --repo rossoctl/rossoctl --state open --search "<issue-number>"
gh pr list --repo rossoctl/rossoctl --state closed --search "<issue-number>" --limit 5
Existing PR found?
│
├─ YES, owned by current gh user
│ → Jump to Flow 2 (/tdd <that PR URL>)
│
├─ YES, owned by someone else
│ → Offer options:
│ a) Start new PR taking their branch as base
│ (cherry-pick approach — our commits can be
│ picked by the original author)
│ b) Comment on their PR with analysis/fix suggestions
│ (include git commands for them to cherry-pick)
│ → If option a: create worktree from their branch
│
└─ NO existing PR
→ Continue to Step 4
Before writing ANY code:
git worktree add .worktrees/<name> -b fix/<slug>-<number> upstream/main
Then enter the TDD loop (see "TDD Code Loop" below).
/tdd <GH PR URL>gh pr view <number> --json author,state,reviewDecision,statusCheckRollup,mergeable,body,comments
Check ownership:
gh api user --jq '.login'
PR owned by current gh user?
│
├─ YES → Step 3 (work directly on the PR)
│
└─ NO → Offer options:
a) Fork their branch into new PR, comment original
with cherry-pick instructions for the fix
b) Just comment with analysis/suggestions
→ If option a: create worktree from their branch
Run rca:ci on failures, then tdd:ci fix loop.
Escalate to tdd:hypershift after 3+ CI failures.
gh api repos/rossoctl/rossoctl/pulls/<number>/comments
gh pr view <number> --json reviews
Assess ALL comments before implementing:
Self-review — review your own changes and post review output as PR comment
Back to Step 3 — wait for CI, check for new comments, repeat until approved
/tdd <local doc/task>Read the doc/task, plan the implementation.
git worktree add .worktrees/<name> -b feat/<slug> upstream/main
Use tdd:kind for fast local iteration until Kind tests pass.
Offer options:
MANDATORY before the first commit in any TDD flow. Prevents pushing work to the wrong branch/PR.
git branch --show-current
gh pr list --head "$(git branch --show-current)" --json number,title,url --jq '.[] | "#\(.number) \(.title) \(.url)"'
Current branch has open PR?
│
├─ YES → Ask user:
│ "You are on branch <branch> which has open PR #<N>: <title>.
│ Is this the right target for your current work?"
│ │
│ ├─ YES → Continue (commit to this branch)
│ │
│ └─ NO → Create worktree with new branch:
│ git worktree add .worktrees/<name> -b <new-branch> upstream/main
│ (switch all subsequent work to the worktree)
│
└─ NO open PR → Check if branch is main/upstream
│
├─ On main → Create worktree with new branch (never commit to main)
│
└─ On feature branch without PR → Ask user:
"You are on branch <branch> with no open PR.
Continue here or create a new worktree?"
Without this gate, it's easy to accidentally push unrelated changes to an existing feature branch with an open PR, polluting that PR with unrelated commits.
Every command that produces more than ~5 lines of output MUST redirect to a file. This prevents context window pollution from build/test/kubectl output accumulating in context and being re-read on every subsequent turn.
# Session-scoped log directory — ALWAYS set before running commands
export LOG_DIR="${LOG_DIR:-${WORKSPACE_DIR:-/tmp}/rossoctl-tdd}"
mkdir -p "$LOG_DIR"
Rules:
command > $LOG_DIR/name.log 2>&1; echo "EXIT:$?"Task(subagent_type='Explore') to read the log file — NEVER in main contextAll three flows eventually enter this loop:
0. Branch verification gate — verify branch/PR association (first commit only)
1. Write/fix code
2. test:write — write or update tests
3. test:review — verify test quality (no silent skips, assertive)
4. test:run-kind or test:run-hypershift — execute tests (output to $LOG_DIR)
5. Track progress — compare test results with previous run
6. cve:scan — scan for CVEs before pushing (BLOCKS if found)
7. git:commit — commit with proper format
8. git:rebase — rebase onto upstream/main
9. Push → ci:monitoring — wait for CI results
10. CI passes? → Handle reviews (Flow 2 Step 4). CI fails? → Back to step 1.
Never revert. Never amend. Commits are permanent history.
Only commit when:
Commit 1: 8 pass, 5 fail ← baseline, acceptable
Commit 2: 10 pass, 3 fail ← good, +2 passing
Commit 3: 11 pass, 2 fail ← good, +1 passing
(no commit): 9 pass, 4 fail ← DON'T COMMIT — regression, keep iterating
| Skill | Cluster | Auto-approve | Speed |
|---|---|---|---|
tdd:ci | None needed | N/A (CI runs remotely) | Slow (wait for CI) |
tdd:kind | Local Kind | All ops auto-approved | Fast |
tdd:hypershift | HyperShift hosted | All ops auto-approved | Medium |
Concurrency limit: Only one
tdd:kindsession at a time (one Kind cluster fits locally). Before routing totdd:kind, runkind get clusters— if a cluster exists from another session, route totdd:ciinstead or ask the user.
rca:ci - Root cause analysis from CI logsrca:hypershift - Root cause analysis with live clusterrca:kind - Root cause analysis on Kindci:status - Check CI pipeline statustest - Test writing, reviewing, and runningtest:review - Verify test quality before committinggit:commit - Commit with proper formatgit:rebase - Rebase before pushinggit:worktree - Create isolated worktreesrepo:pr - PR creation conventionscve:scan - CVE scanning gatecve:brainstorm - CVE disclosure planning아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
Authentication and authorization patterns for Rossoctl services
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Create confidential OAuth2 clients in Keycloak for server-to-service authentication
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Configure MLflow with mlflow-oidc-auth plugin for Keycloak OIDC authentication
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Configure OpenTelemetry Collector with OAuth2 authentication for trace export
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
CI pipeline monitoring, status checks, and PR validation workflows
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Monitor running CI jobs, wait for completion, create tasks for results
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.