# Pjf

> Professional Judgment Filter — a reusable decision module for deciding whether content from a private communication source (direct messages, private channels or group chats, email received or sent, meeting transcripts, or any other non-public exchange) may be used in a write to a more-visible destination: a task or ticket, a project tracker or board, a wiki or doc page, or a draft reply. Apply this skill whenever you process private-source content and must decide what to include. Use it in any scheduled task, capture bot, watch, digest, or follow-up drafter that reads private communications before writing to a shared or public destination. If you are about to write content sourced from a private message, email, private channel, or transcript into any destination more visible than the source — run the PJF first.

- Skill: `ebellefontaine/pjf` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ebellefontaine/pjf`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ebellefontaine/pjf/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: ebellefontaine (https://skillmd.com/u/ebellefontaine)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ebellefontaine/pjf

---


# Professional Judgment Filter (PJF)

This module answers one question: **Should this content from a private source be used in a write to a more-visible destination?**

Apply it to every piece of content that came from a private source — a direct message, a private channel or group chat, email (received or sent), a meeting transcript, or any other non-public exchange — before writing anything to a destination more visible than that source: a task or ticket, a project board, a wiki or doc, a draft message, or any shared workspace.

The principle is source-to-destination visibility, not any particular tool. If the destination can be seen by more people than the source, the content is crossing a visibility boundary, and the PJF governs that crossing regardless of which apps are involved.

---

## The Three Gates

Content passes only if **ALL THREE** conditions are true. Fail any one → skip the content entirely.

### Gate 1 — RELEVANCE
The content must directly reference tracked work: a specific task, project, work-item or ticket key, sprint, integration, vendor, known dependency, or a named participant in active work.

**Skip if:** off-topic conversation, general banter, tool complaints unrelated to a tracked item, personal or social messages, or anything that doesn't connect to a specific piece of active work.

### Gate 2 — PROFESSIONAL INTEGRITY
If this content were extracted and written to a more-visible destination, it must accurately represent a work event and preserve the professional reputations of everyone named.

**Skip if any of the following apply:**
- Jokes, sarcasm, or hyperbole that could be misread as fact (e.g., "we should burn it all down and start over")
- Venting, ranting, or informal opinions that don't represent a real decision
- Anything that would embarrass a named colleague if seen out of context
- Credentials, secrets, API keys, or sensitive security/access details
- Private personal discussions unrelated to work delivery

The test: *Would a reasonable colleague be comfortable seeing this written as a factual work note?* If no, skip it.

### Gate 3 — TASK VALUE
The content must add at least **one** of these signals:

- A decision made or a decision needed
- A named point of contact or stakeholder
- An implementation detail, integration requirement, or technical constraint
- A deadline, milestone, goal, or metric that was set or changed
- A blocker identified or resolved
- An explicit commitment, ETA, or status change given by a named participant
- An action item with a named owner

**Skip if:** the message is purely informational background with no one committing to anything, making a decision, or surfacing a constraint.

---

## Output: What to do after filtering

### If content FAILS any gate
Skip entirely. Do not:
- Create a task or item from it
- Reference or paraphrase it in a write
- Use it as context in a draft response
- Log it in a run summary with enough detail to expose the private content

Log only: `[skipped — PJF: <gate name> failed]` so the omission is traceable without revealing the content.

### If content PASSES all three gates
Extract the **professional fact only**:
- State the work-relevant finding in clean, neutral language
- Strip informal language, emotional tone, jokes, and off-the-cuff phrasing
- Never quote private-source text verbatim — paraphrase to the factual substance
- Attribute by source type, not by quoting. Cite where it came from, not what was said: `(per direct message)`, `(per email)`, `(per meeting)` — never by reproducing the message

**Examples:**

| Raw private content | What to write |
|---|---|
| "ugh the stakeholder keeps being difficult about the analytics timeline, they keep pushing it to next quarter" | `Stakeholder has pushed the analytics integration target to next quarter. (per direct message)` |
| "lol we're literally never going to finish this lmao" | Skip — Gate 2 fails (hyperbole/joke) |
| "hey can you grab lunch tomorrow?" | Skip — Gate 1 fails (not work-relevant) |
| "I'll have the reporting API spec ready by EOD Friday" | `Owner committed to reporting API spec delivery by EOD Friday. (per email)` |
| "the password for the staging env is <redacted>" | Skip — Gate 2 fails (credentials) |

---

## Applying it during a run

When a task or workflow references the PJF, apply it per-item before any write, item creation, or draft composition. The filter is not a one-time pass at the start of a run — evaluate each candidate piece of content independently.

If an entire private source fails Gate 1 (nothing in this thread touches tracked work), you can skip scanning the rest of that thread for that run.

If a private source partially passes (some messages pass, some fail), extract only the passing content. Do not let a passing message pull in surrounding context that would fail.

---

## Edge cases

**"This might be sarcasm"** — when in doubt, treat it as failing Gate 2. Don't make judgment calls that could expose a colleague to embarrassment.

**Borderline TASK VALUE** — if you're unsure whether something adds value, ask: *Does this change what someone would do next?* If yes, it passes Gate 3. If it's just background color with no action implications, skip it.

**Multiple signals in one message** — extract only the passing signals. A message can pass for one fact and fail for another in the same sentence. Extract the fact, leave the rest.

**The operator's own outgoing messages** — apply the same filter to messages sent by the person on whose behalf you are working. Their own commitments made in email or messages are high-value signals (Gate 3 passes for any commitment), but their informal venting or off-the-cuff remarks still fail Gate 2.

