comm-link-debugging
Skill0 starsChanged 3 months agoMITView on GitHub
Debug integration issues in cross-system communication links (client↔server, phone↔device data channels) when you only control your side and the peer is a black box. Use when the user says 'they said they sent it but I didn't get it', 'link handshake is stuck', or is unsure which protocol layer failed. Don't use for single-system bugs (use error-handling) or non-comm cross-system issues like data consistency or timing.
In this repository15 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skill-recapSkill
- deep-comparison-analysisSkill
- industry-practice-surveySkill
- tech-selection-convergenceSkill
- dev-recap-docsSkill
- guide-and-manualSkill
- readme-syncSkill
- change-recapSkill
- code-reviewSkill
- error-handlingSkill
- legacy-code-dispositionSkill
- phase-trackingSkill
- repo-hygieneSkill
- workspace-consistencySkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 56
Do not proxy with a neighbor-layer signal: "ping works so the network is fine" — ping is network-layer (ICMP).
- Distinctive: line 65
Do not blindly trust a single-side conclusion, and do not reject it outright either — use evidence clash to localize.
- Distinctive: line 74
Read the peer's code to look for bugs, but watch step ④.
- Very specific: line 124
Can be referenced by
error-handling: when error-handling's "localization" stage runs into a comm-link / peer-invisible scenario, link …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Debug integration issues in communication / data-transfer links across systems, when you only control one end and the peer is not visible. This skill is a comm-link integration methodology — for one of the most common classes of cross-system debugging: handling the traps that hit hardest when "the peer is a black box and you only control your side".
Scope statement: cross-system debugging covers more than comm links — it also includes data consistency, multi-module timing, cross-team contract-understanding gaps, and hardware-software state sync, among non-comm problems — those are out of scope here. Of the five steps: ② cross-end claim-vs-evidence clash, ③ push your side to the limit then read the peer, and ⑤ lowest-cost diagnosis for the peer, generalize to non-comm cross-system cases; ① layered native-signal verification and ④ reachability principle lean toward comm / protocol-stack links.
When to use
- A comm-link integration is stuck: client↔server, phone↔device, data channels between hardware and software, cross-network / cross-service transport
- "They said they sent it but I didn't get it" / "I sent it but they say they didn't receive it"
- Stuck at some protocol layer (network? handshake? transport? application semantics?) and you cannot tell which
- The peer is another team / system / AI / vendor, and you can only see your side
When NOT to use
- Bugs inside a single system (use
error-handling) - Pure own-side code-logic problems
- Non-comm cross-system problems (data consistency / timing / contract gaps, etc.)
Core principle: reachability / correctness does not transfer across layers
A comm link is organized as a protocol stack. "Connected / correct" at one layer does not imply "connected / correct" at an adjacent layer — each layer has its own failure modes invisible to neighbors.
Generic counter-examples (protocol-independent):
| Lower layer "connected / correct" | ≠ Upper layer "connected / correct" |
| Network reachable (ping / routing works) | Transport connected (port reachable) |
| Connection established | Handshake succeeded (e.g., TLS) |
| Encryption layer OK | Application protocol parsed correctly |
| Transport acknowledges receipt (ACK / SACK) | Peer application layer actually processed it (onMessage / business logic) |
| Interface returns 200 | Business semantics actually succeeded |
| Hardware enumerated | Driver responds normally |
→ To verify the layer under suspicion, use that layer's own native observable signal; do not proxy a conclusion with a neighbor-layer signal.
Methodology (five steps)
① Layered localization + native signal verification
Slice the comm link by protocol stack layers, locate the layer where the failure most likely happens, and verify with that layer's own native signal / tool. This is because "connected / correct" does not transfer across layers (see core principle).
- Do not proxy with a neighbor-layer signal: "ping works so the network is fine" — ping is network-layer (ICMP); what's failing is transport-layer (UDP/TCP); they are different things.
- On your own application layer, do not assume success when calling a lower-layer API — check return values / success flags. Typical case: the Boolean returned by
send()/publish()is ignored, the application layer wrongly concludes "sent", and in reality the message never entered the queue (buffer full / transient state). The return value is the native success signal of that call as it crosses the boundary; not checking it means sending blind. - At the lowest layer, verify with protocol bytes / packet contents — when application logs cannot tell, enable verbose logging in the low-level library and parse protocol packets directly (chunk type / field values) to judge data flow direction and handshake state. This is more native and harder to lie than application-layer logs.
- Fill the layered verification table row by row: layer / native signal or tool / result (connected / not connected / unknown).
② Cross-end claim-vs-evidence clash
(Generalizes to non-comm cross-system cases.) Take the conclusions the peer (another team / system / AI / vendor) gives, and clash them line by line with your own runtime evidence to find contradictions. The true root cause often lives in those contradictions.
- Do not blindly trust a single-side conclusion, and do not reject it outright either — use evidence clash to localize.
- Typical: the peer says "network unreachable / no pair connectivity", while your own log shows "a successful response from the peer (code=0 / rtt=X)" — the latter could only have come from the peer; the contradiction is the lead.
- Clash the peer's "protocol-layer judgment" too: the peer says "this is an X-type packet", but your byte-level parse shows it is actually Y (e.g., misjudging a STUN packet as a data-channel packet) — trust the bytes.
③ Push your side to the limit → switch to reading the peer's implementation
(Generalizes to non-comm cross-system cases.) When you have no more observables or tunables on your own side (the logs that should be read have been read, the switches that should be tried have been tried, all return values checked), shift the focus to the peer's implementation (source / config / logs), because the problem most likely lives on the peer.
- Maintain an "own-side tunable checklist" and mark it exhausted — to avoid spinning in place on your side.
- Read the peer's code to look for bugs, but watch step ④.
④ Runtime over static artifacts
(Leans toward comm links: protocol parameters / config are often out of sync.) The source / config / declarations in hand may not be the version actually running. Any "the code says X" conclusion must be confirmed with runtime evidence (runtime logs / packet capture / probe output); otherwise you may be debugging against stale or non-effective static artifacts.
- Typical: source says 640×480, runtime actually outputs 320×240 → source ≠ the running binary.
- Three or more independent contradictions (resolution / frame rate / parameter-level mismatches) → it is almost certain that "the source given is not what's running"; stop debugging against it and demand runtime evidence.
⑤ Lowest-cost diagnosis for the peer
(Generalizes to non-comm cross-system cases.) When the ball is on the peer's side, design one diagnostic instruction that the peer can run at lowest cost and that definitively splits the root-cause direction (using a probe / packet capture / log switch that the peer's environment already provides); running one line should converge the root cause into a few directions and avoid guesswork ping-pong.
- Bad example: asking the peer to "re-check the entire pipeline" — high cost, vague feedback.
- Good example: a single
tcpdump/ raising a module's log level / a built-in probe switch, with output that directly splits ("packets leaving → sending side is fine" / "no packets leaving → sending side is the problem"). - For each diagnostic, annotate: what to run, and which root-cause directions it can split into.
Output template
# Comm-link integration troubleshooting
## 1. Layered verification (native signal)
| Layer | Native signal / tool | Result |
|-------|----------------------|--------|
| ... | ... | connected / not connected / unknown |
## 2. Cross-end claim-vs-evidence clash
| Peer's claim | Our evidence | Contradiction? | Direction it points |
|--------------|--------------|----------------|---------------------|
| ... | ... | yes / no | ... |
## 3. Own-side tunables (marked to the limit)
- [ ] Checked / tried ... (to the limit)
## 4. Peer diagnostic instructions (lowest cost, definitive split)
| Instruction | Root-cause directions it can split |
|--------------|------------------------------------|
| ... | ... |
## 5. Root cause (one sentence)
____Relationship to other skills
- Can be referenced by
error-handling: when error-handling's "localization" stage runs into a comm-link / peer-invisible scenario, link here as the dedicated methodology. The specialized content lives only in this skill, avoiding duplication and update drift. - Complementary to
deep-comparison-analysis: the latter is the "comparison and convergence" methodology; this skill is the "comm link troubleshooting and localization" methodology. - Scope boundary: this skill is the comm-link sub-class of cross-system debugging; non-comm cross-system problems (data consistency / timing / contract gaps) are out of scope and may warrant a dedicated skill once enough cases accumulate.
Practice reference (optional, as an appendix example)
The methodology is fully generic and not tied to any specific protocol or stack. If a project already contains a complete cross-system comm-link integration case (e.g., WebRTC / MQTT / gRPC / HTTP / WebSocket cross-service debugging), it can be referenced as an appendix example — walk the five steps over that concrete scenario. But the methodology does not depend on any case existing.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

