hackathon-coach-brief
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBrief a coach on a team
向教练简报某支团队
The coach is signed in with their own Antasphere account; the CLI does every read and prints
JSON with . This skill sequences the reads and writes the summary. It never posts, claims or
resolves anything: that is the skill, on the coach's word. Where a step says ASK, ask the coach
and wait.
hackathon--jsonhackathon-coach-helpA refusal is with an exit code: 2 a flag is wrong,
3 access (a sign-in to do, not on the roster, no event), 1 another refusal the message names. Never retry
in a loop.
{ "ok": false, "error": { "code", "message" } }教练使用自己的 Antasphere 账号登录;所有读取操作均由 CLI 执行,并通过 输出 JSON。此 skill 会依次调度各项读取并撰写总结。它绝不发布、认领或解决任何内容;这些操作属于 skill,只有在教练明确要求时才执行。凡步骤标为 ASK 的地方,都应询问教练并等待答复。
hackathon--jsonhackathon-coach-help拒绝结果为 ,并带有退出码:2 表示 flag 有误;3 表示访问问题(需要登录、不在名册中或没有活动);1 表示其他拒绝,具体原因见消息。绝不循环重试。
{ "ok": false, "error": { "code", "message" } }1. Sign in and the event's workspace (once per machine)
1. 登录及活动 workspace(每台机器一次)
bash
npm i -g @antasphere/hackathon@latest
hackathon --version
hackathon connect --json-
Exit 3 saying to run:
hackathon loginis interactive (the Antasphere email, then the code mailed to it). ASK the coach to run it in a terminal of their own, with the email the organizers put on the roster, and to tell you when it printedhackathon login. ThenSigned in as …again.hackathon connect --json -
or "no access to Antasphere Hackathon": the organizers must add the coach's email. Say so and stop.
not_on_roster -
: the account may be in several workspaces and this one holds no event. List them and pick the event's:
event_not_configuredbashhackathon workspaces --json # { workspaces: [{ id, name, … }], selectedWorkspaceId } hackathon workspace use <id-or-name> # every later command runs there hackathon connect --jsonASK which one when several could be the event's; never guess.
Read in the connect answer. (a coach) or : go on. :
this is not a coach account, point to the skill and stop. : the jury does not read the chats;
stop. is expected for a coach: a coach has no team app to set up.
eligibility.roleadvisororganizerparticipanthackathon-setupjuryeligible: falsebash
npm i -g @antasphere/hackathon@latest
hackathon --version
hackathon connect --json-
退出码为 3,且提示运行时:
hackathon login是交互式命令(先输入 Antasphere 邮箱,再输入发送到该邮箱的验证码)。ASK 教练在自有终端中运行该命令,使用组织者登记在名册中的邮箱,并在看到hackathon login后告知你。然后再次运行Signed in as …。hackathon connect --json -
遇到或
not_on_roster时:组织者必须添加教练的邮箱。告知教练并停止。no access to Antasphere Hackathon -
遇到时:账号可能位于多个 workspace,而当前 workspace 未配置活动。列出这些 workspace 并选择活动所属项:
event_not_configuredbashhackathon workspaces --json # { workspaces: [{ id, name, … }], selectedWorkspaceId } hackathon workspace use <id-or-name> # every later command runs there hackathon connect --json当有多个 workspace 都可能是活动所属项时,ASK 教练选择;绝不猜测。
查看 connect 返回结果中的 。若为 (教练)或 ,继续执行。若为 ,说明这不是教练账号,引导使用 skill,然后停止。若为 ,jury 不读取聊天,停止。教练出现 属于预期情况:教练没有需要设置的团队应用。
eligibility.roleadvisororganizerparticipanthackathon-setupjuryeligible: false2. The event and the teams
2. 活动与团队
bash
hackathon event status --json
hackathon chats list --json
hackathon decks gallery --json- From :
event status,phase,nextDeadline(the build end plus the grace), the event'sevent.freezeAt, andtimezoneandevent.github.organization(where the team repositories live and the branch that counts). A coach's status lists no team: the teams come from the two reads below.event.github.designatedBranch - From :
chats listwithchannels[]kindare the teams (teamis the team,nameits id,projectIdthe team chat's channel id);idkindare the help request threads (requestnames the team).projectId - From :
decks gallery, one per team:entries[],project.name(what the team says it builds),project.description, andproject.memberCount/links.demo(the demo deck and the presentation, Slideless share links, null until the team sets them).links.pitch
No team named: give one line per team (name, description, members, open requests count from step 4) and
ASK which one to brief. Match the team the coach names case-blind against ; several match, ASK.
namebash
hackathon event status --json
hackathon chats list --json
hackathon decks gallery --json- 从 获取:
event status、phase、nextDeadline(构建结束时间加宽限期)、活动的event.freezeAt,以及timezone和event.github.organization(团队仓库所在位置及计入成绩的分支)。教练的状态中不会列出团队;各团队需从以下两项读取结果中获取。event.github.designatedBranch - 从 获取:
chats list中channels[]为kind的项就是各团队(team是团队名称,name是其 id,projectId是团队聊天的 channel id);id为kind的项是求助请求的 thread(request标明所属团队)。projectId - 从 获取:
decks gallery中每项对应一支团队,包括entries[]、project.name(团队说明自己正在构建什么)、project.description,以及project.memberCount/links.demo(demo deck 和演示文稿的 Slideless 分享链接;团队设置前为 null)。links.pitch
未指定团队时:每个团队输出一行(名称、描述、成员数、第 4 步统计的未处理请求数),并 ASK 要简报哪支团队。将教练指定的团队与 进行不区分大小写的匹配;若匹配到多个团队,则 ASK。
name3. The team's chat, threads included
3. 团队聊天及其 thread
bash
hackathon chats read <teamChannelId> --limit 100 --jsonposts[]author.nameauthorRoleparticipantadvisororganizerbodycreatedAtreplyCountnextCursor--cursor <nextCursor>replyCountbash
hackathon chats replies <teamChannelId> <postId> --limit 100 --json # oldest firstchats repliesnpm i -g @antasphere/hackathon@latestbash
hackathon chats read <teamChannelId> --limit 100 --jsonposts[]author.nameauthorRoleparticipantadvisororganizerbodycreatedAtreplyCountnextCursor--cursor <nextCursor>replyCountbash
hackathon chats replies <teamChannelId> <postId> --limit 100 --json # oldest firstchats repliesunknown commandnpm i -g @antasphere/hackathon@latest4. The team's help requests
4. 团队的求助请求
bash
hackathon requests list --limit 100 --jsonKeep the whose is the team's. Each has , , ,
(, , ), , , , and , its thread:
requests[]project.ididtitlebodystatusopenclaimedresolvedclaimedByopenedBycreatedAtchannelIdbash
hackathon chats read <request.channelId> --limit 100 --jsonRead every open and claimed request's thread; a resolved one only when it is from the last two hours.
bash
hackathon requests list --limit 100 --json保留 中 与该团队匹配的项目。每项包含 、、、(、、)、、、 和 ,后者对应其 thread:
requests[]project.ididtitlebodystatusopenclaimedresolvedclaimedByopenedBycreatedAtchannelIdbash
hackathon chats read <request.channelId> --limit 100 --json读取每个 open 和 claimed 请求的 thread;resolved 请求仅在创建时间位于最近两小时内时读取。
5. The repository
5. 仓库
A coach reads every team repository: the organizers' provisioning invites every coach whose GitHub
username is on the roster, with read access. Nothing on the platform names a team's repository to a
coach; GitHub does. The repository is , the team's name lower-cased,
accents dropped, every run of spaces or signs turned into one hyphen (a team "Night Owls" →
).
<organization>/<event>-<team>…-night-owlsASK the local folder once and propose ; each team goes in its own
subfolder named like the repository.
~/Antasphere/hackathon-coach/With the GitHub CLI ( answers):
gh auth statusbash
gh api /user/repository_invitations --jq '.[] | {id, repo: .repository.full_name}'
gh repo list <organization> --limit 200 --json name,url- A pending invitation for a repository of the event's organization: ASK the coach before accepting
(it acts on their GitHub account), then for each one they OK.
gh api --method PATCH /user/repository_invitations/<id> - The team's repository is the one of whose name ends with
gh repo list.-<team-slug>
Without : the invitations wait on https://github.com/notifications (and by email); ASK the coach to
accept them, then try the name above with .
ghgit ls-remote https://github.com/<organization>/<name>.gitNo invitation and no access at all: the roster has no GitHub username for the coach, or the organizers
have not run the provisioning since the coach was added. Say so: an organizer adds the username (Add
advisor, or the roster import) and presses Check again on the Admin page. Go on without the code.
Clone or update, never anything else:
bash
git clone https://github.com/<organization>/<repo>.git <folder>/<repo> # first time
git -C <folder>/<repo> pull --ff-only # afterwards
git -C <folder>/<repo> log origin/<designatedBranch> -n 30 --date=iso --format='%h %ad %an %s'The log on the designated branch is what the team pushed; the platform counts the last push it received
before . A coach cannot read the platform's receipts (the submissions are the team's and
the organizers'); an organizer running this skill may add
(the last received revision, the frozen evidence).
event.freezeAthackathon submissions show <team> --json教练可以读取所有团队仓库:组织者的配置流程会向名册中拥有 GitHub username 的每位教练发出仓库邀请,并授予只读权限。平台不会告诉教练某支团队对应的仓库名称,GitHub 会提供。仓库名称为 ,其中团队名称转为小写、去除重音符号,并将每段由空格或符号组成的连续字符转换为一个连字符(团队 “Night Owls” → )。
<organization>/<event>-<team>…-night-owls只需 ASK 一次本地文件夹位置,并建议使用 ;每支团队放在一个以仓库命名的独立子文件夹中。
~/Antasphere/hackathon-coach/使用 GitHub CLI(可通过 检查):
gh auth statusbash
gh api /user/repository_invitations --jq '.[] | {id, repo: .repository.full_name}'
gh repo list <organization> --limit 200 --json name,url- 如果活动 organization 有一个待处理的仓库邀请:接受邀请会操作教练的 GitHub 账号,因此先 ASK 教练;得到同意后,针对每个已确认的邀请执行 。
gh api --method PATCH /user/repository_invitations/<id> - 团队仓库是 输出中名称以
gh repo list结尾的仓库。-<team-slug>
如果没有 :邀请会保留在 https://github.com/notifications(并通过邮件发送);ASK 教练接受邀请,然后使用上述名称尝试 。
ghgit ls-remote https://github.com/<organization>/<name>.git如果既无邀请也完全无访问权限:说明名册中没有教练的 GitHub username,或者组织者在其加入名册后尚未执行配置流程。告知教练:组织者需要添加该 username(Add advisor,或导入名册),并在 Admin 页面再次点击 Check。然后在不获取代码的情况下继续。
克隆或更新,绝不执行其他操作:
bash
git clone https://github.com/<organization>/<repo>.git <folder>/<repo> # first time
git -C <folder>/<repo> pull --ff-only # afterwards
git -C <folder>/<repo> log origin/<designatedBranch> -n 30 --date=iso --format='%h %ad %an %s'designated branch 上的日志就是团队 push 的内容;平台会统计其在 之前最后接收到的 push。教练无权读取平台回执(submissions 属于团队和组织者);运行此 skill 的组织者可以补充执行 (获取最后接收到的 revision 和冻结证据)。
event.freezeAthackathon submissions show <team> --json6. The summary
6. 总结
Read the repository's , , the manifest files (,
, , , , , ) and
the last commits' diffs (). Then write, short:
README.mdhackathon.jsonpackage.jsonpyproject.tomlrequirements.txtgo.modCargo.tomlDockerfiledocker-compose.ymlgit -C <dir> show --stat HEAD~5..HEAD- What they build: one or two sentences, from the description, the README and the code.
- Stack: languages, frameworks, services, how it runs.
- Where they are: the last pushes (count, last one's time against the freeze), what works.
- Where they are stuck: open and claimed requests (title, who claimed it, age), the questions left unanswered in the chat, errors quoted in the threads.
- What they asked: each request in one line, and what the thread already tried.
- Links: the demo deck and the presentation (or "not set yet"), the clone's folder.
End with the next move: the skill to answer a request.
hackathon-coach-help读取仓库的 、、manifest 文件(、、、、、、),以及最近提交的 diff()。然后简要写出:
README.mdhackathon.jsonpackage.jsonpyproject.tomlrequirements.txtgo.modCargo.tomlDockerfiledocker-compose.ymlgit -C <dir> show --stat HEAD~5..HEAD- 构建内容:依据描述、README 和代码,用一两句话说明。
- 技术栈:语言、框架、服务及运行方式。
- 当前进展:最近 push(数量、最后一次 push 的时间与冻结时间的对比),以及已经完成的内容。
- 当前卡点:open 和 claimed 请求(标题、认领者、已持续时间)、聊天中尚未得到回答的问题,以及 thread 中引用的错误。
- 提出的请求:每个请求用一行概括,以及其 thread 已经尝试过的内容。
- 链接:demo deck 和演示文稿(或“尚未设置”),以及 clone 的文件夹。
最后给出下一步:使用 skill 回应某个请求。
hackathon-coach-helpNever
绝不
- Never post, claim, unclaim, resolve or reopen here.
- Never push, never commit in a team's clone, never or delete a clone:
git reset --hardonly. A coach suggests a change in a reply; the team pushes it.pull --ff-only - Never pass a credential to a command, never print a , never paste a secret found in a repository into a summary: name the file and tell the coach to tell the team.
.env - Never read or summarize a team the coach did not ask about, beyond the one-line overview.
- 绝不发布、认领、取消认领、解决或重新打开任何内容。
- 绝不 push,绝不在团队的 clone 中 commit,绝不执行 ,也绝不删除 clone:只允许
git reset --hard。教练在回复中提出修改建议;由团队 push。pull --ff-only - 绝不把 credential 传给命令,绝不打印 ,绝不把在仓库中发现的 secret 粘贴到总结中:只说明文件名称,并让教练转告团队。
.env - 除一行概览外,绝不读取或总结教练未询问的团队。