docstring
Write docstrings for PyTorch functions and methods following PyTorch conventions. Use when writing or updating docstrings in PyTorch code.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o docstring.zip https://jpskill.com/download/19806.zip && unzip -o docstring.zip && rm docstring.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/19806.zip -OutFile "$d\docstring.zip"; Expand-Archive "$d\docstring.zip" -DestinationPath $d -Force; ri "$d\docstring.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
docstring.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
docstringフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
PyTorch Docstring 記述ガイド
このスキルでは、torch/_tensor_docs.py および torch/nn/functional.py の規約に従って、PyTorch プロジェクトの関数およびメソッドの docstring を記述する方法について説明します。
一般原則
- すべての docstring には、LaTeX/数式のバックスラッシュに関する問題を避けるため、raw string (
r"""...""") を使用してください。 - ドキュメントには Sphinx/reStructuredText (reST) 形式に従ってください。
- 簡潔かつ完全にしてください。すべての重要な情報を含めてください。
- 可能な場合は常に例を含めてください。
- 関連する関数/クラスへの相互参照を使用してください。
Docstring の構造
1. 関数シグネチャ (最初の行)
すべてのパラメータを示す関数シグネチャから始めてください。
r"""function_name(param1, param2, *, kwarg1=default1, kwarg2=default2) -> ReturnType
注記:
- 関数名を含めてください。
- 位置引数とキーワード専用引数を示してください (
*区切り文字を使用)。 - デフォルト値を含めてください。
- 戻り値の型アノテーションを示してください。
- この行はピリオドで終わらないでください。
2. 簡潔な説明
関数が何をするのかを1行で説明してください。
r"""conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) -> Tensor
Applies a 2D convolution over an input image composed of several input
planes.
3. 数式 (該当する場合)
数式には Sphinx の数式ディレクティブを使用してください。
.. math::
\text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}
またはインライン数式: :math:\x^2``
4. 相互参照
Sphinx のロールを使用して、関連するクラスや関数にリンクしてください。
:class:\~torch.nn.ModuleName`` - クラスへのリンク:func:\torch.function_name`` - 関数へのリンク:meth:\~Tensor.method_name`` - メソッドへのリンク:attr:\attribute_name`` - 属性の参照~プレフィックスは最後のコンポーネントのみを表示します (例:torch.nn.Conv2dの代わりにConv2d)
例:
See :class:`~torch.nn.Conv2d` for details and output shape.
5. 注記と警告
重要な情報には注意書きを使用してください。
.. note::
This function doesn't work directly with NLLLoss,
which expects the Log to be computed between the Softmax and itself.
Use log_softmax instead (it's faster and has better numerical properties).
.. warning::
:func:`new_tensor` always copies :attr:`data`. If you have a Tensor
``data`` and want to avoid a copy, use :func:`torch.Tensor.requires_grad_`
or :func:`torch.Tensor.detach`.
6. Args セクション
すべてのパラメータを型アノテーションと説明付きで記述してください。
Args:
input (Tensor): input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iH , iW)`
weight (Tensor): filters of shape :math:`(\text{out\_channels} , kH , kW)`
bias (Tensor, optional): optional bias tensor of shape :math:`(\text{out\_channels})`. Default: ``None``
stride (int or tuple): the stride of the convolving kernel. Can be a single number or a
tuple `(sH, sW)`. Default: 1
書式設定ルール:
- パラメータ名は小文字で記述してください。
- 型は括弧で囲んでください:
(Type)、オプションのパラメータの場合は(Type, optional)。 - 説明は型の後に続けてください。
- オプションのパラメータの場合、最後に "Default:
value" を含めてください。 - インラインコードには二重バッククォートを使用してください:
``None`` - 継続行は2スペースでインデントしてください。
7. Keyword Args セクション (該当する場合)
キーワード引数は個別に記述されることがあります。
Keyword args:
dtype (:class:`torch.dtype`, optional): the desired type of returned tensor.
Default: if None, same :class:`torch.dtype` as this tensor.
device (:class:`torch.device`, optional): the desired device of returned tensor.
Default: if None, same :class:`torch.device` as this tensor.
requires_grad (bool, optional): If autograd should record operations on the
returned tensor. Default: ``False``.
8. Returns セクション (必要な場合)
戻り値を記述してください。
Returns:
Tensor: Sampled tensor of same shape as `logits` from the Gumbel-Softmax distribution.
If ``hard=True``, the returned samples will be one-hot, otherwise they will
be probability distributions that sum to 1 across `dim`.
または、文脈から明らかな場合は、関数シグネチャの行に含めるだけでも構いません。
9. Examples セクション
可能な場合は常に例を含めてください。
Examples::
>>> inputs = torch.randn(33, 16, 30)
>>> filters = torch.randn(20, 16, 5)
>>> F.conv1d(inputs, filters)
>>> # With square kernels and equal stride
>>> filters = torch.randn(8, 4, 3, 3)
>>> inputs = torch.randn(1, 4, 5, 5)
>>> F.conv2d(inputs, filters, padding=1)
書式設定ルール:
Examples::を二重コロン付きで使用してください。- Python コードには
>>>プロンプトを使用してください。 - 役立つ場合は
#でコメントを含めてください。 - 理解を助ける場合は実際の出力を示してください (
>>>なしでインデント)。
10. 外部リンク
論文や外部ドキュメントへのリンクを貼ってください。
.. _Link Name:
https://arxiv.org/abs/1611.00712
テキスト内で参照してください: See `Link Name`_
メソッドの種類
ネイティブ Python 関数
通常の Python 関数には、標準の docstring を使用してください。
def relu(input: Tensor, inplace: bool = False) -> Tensor:
r"""relu(input, inplace=False) -> Tensor
Applies the rectified linear unit function element-wise. See
:class:`~torch.nn.ReLU` for more details.
"""
# implementation
C-Bound 関数 (add_docstr を使用)
C-bound 関数には _add_docstr を使用してください。
conv1d = _add_docstr(
torch.conv1d,
r"""
conv1d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) -> Tensor
Applies a 1D convolution over an input signal composed of several input
planes.
See :class:`~torch.nn.Conv1d` for details and output shape.
Args:
input: input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iW)`
weight: filters of shape :math:`(\text{out\_channels} , kW)`
...
""",
)
インプレース変数
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
PyTorch Docstring Writing Guide
This skill describes how to write docstrings for functions and methods in the PyTorch project, following the conventions in torch/_tensor_docs.py and torch/nn/functional.py.
General Principles
- Use raw strings (
r"""...""") for all docstrings to avoid issues with LaTeX/math backslashes - Follow Sphinx/reStructuredText (reST) format for documentation
- Be concise but complete - include all essential information
- Always include examples when possible
- Use cross-references to related functions/classes
Docstring Structure
1. Function Signature (First Line)
Start with the function signature showing all parameters:
r"""function_name(param1, param2, *, kwarg1=default1, kwarg2=default2) -> ReturnType
Notes:
- Include the function name
- Show positional and keyword-only arguments (use
*separator) - Include default values
- Show return type annotation
- This line should NOT end with a period
2. Brief Description
Provide a one-line description of what the function does:
r"""conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) -> Tensor
Applies a 2D convolution over an input image composed of several input
planes.
3. Mathematical Formulas (if applicable)
Use Sphinx math directives for mathematical expressions:
.. math::
\text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}
Or inline math: :math:\x^2``
4. Cross-References
Link to related classes and functions using Sphinx roles:
:class:\~torch.nn.ModuleName`` - Link to a class:func:\torch.function_name`` - Link to a function:meth:\~Tensor.method_name`` - Link to a method:attr:\attribute_name`` - Reference an attribute- The
~prefix shows only the last component (e.g.,Conv2dinstead oftorch.nn.Conv2d)
Example:
See :class:`~torch.nn.Conv2d` for details and output shape.
5. Notes and Warnings
Use admonitions for important information:
.. note::
This function doesn't work directly with NLLLoss,
which expects the Log to be computed between the Softmax and itself.
Use log_softmax instead (it's faster and has better numerical properties).
.. warning::
:func:`new_tensor` always copies :attr:`data`. If you have a Tensor
``data`` and want to avoid a copy, use :func:`torch.Tensor.requires_grad_`
or :func:`torch.Tensor.detach`.
6. Args Section
Document all parameters with type annotations and descriptions:
Args:
input (Tensor): input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iH , iW)`
weight (Tensor): filters of shape :math:`(\text{out\_channels} , kH , kW)`
bias (Tensor, optional): optional bias tensor of shape :math:`(\text{out\_channels})`. Default: ``None``
stride (int or tuple): the stride of the convolving kernel. Can be a single number or a
tuple `(sH, sW)`. Default: 1
Formatting rules:
- Parameter name in lowercase
- Type in parentheses:
(Type),(Type, optional)for optional parameters - Description follows the type
- For optional parameters, include "Default:
value" at the end - Use double backticks for inline code:
``None`` - Indent continuation lines by 2 spaces
7. Keyword Args Section (if applicable)
Sometimes keyword arguments are documented separately:
Keyword args:
dtype (:class:`torch.dtype`, optional): the desired type of returned tensor.
Default: if None, same :class:`torch.dtype` as this tensor.
device (:class:`torch.device`, optional): the desired device of returned tensor.
Default: if None, same :class:`torch.device` as this tensor.
requires_grad (bool, optional): If autograd should record operations on the
returned tensor. Default: ``False``.
8. Returns Section (if needed)
Document the return value:
Returns:
Tensor: Sampled tensor of same shape as `logits` from the Gumbel-Softmax distribution.
If ``hard=True``, the returned samples will be one-hot, otherwise they will
be probability distributions that sum to 1 across `dim`.
Or simply include it in the function signature line if obvious from context.
9. Examples Section
Always include examples when possible:
Examples::
>>> inputs = torch.randn(33, 16, 30)
>>> filters = torch.randn(20, 16, 5)
>>> F.conv1d(inputs, filters)
>>> # With square kernels and equal stride
>>> filters = torch.randn(8, 4, 3, 3)
>>> inputs = torch.randn(1, 4, 5, 5)
>>> F.conv2d(inputs, filters, padding=1)
Formatting rules:
- Use
Examples::with double colon - Use
>>>prompt for Python code - Include comments with
#when helpful - Show actual output when it helps understanding (indent without
>>>)
10. External References
Link to papers or external documentation:
.. _Link Name:
https://arxiv.org/abs/1611.00712
Reference them in text: See `Link Name`_
Method Types
Native Python Functions
For regular Python functions, use a standard docstring:
def relu(input: Tensor, inplace: bool = False) -> Tensor:
r"""relu(input, inplace=False) -> Tensor
Applies the rectified linear unit function element-wise. See
:class:`~torch.nn.ReLU` for more details.
"""
# implementation
C-Bound Functions (using add_docstr)
For C-bound functions, use _add_docstr:
conv1d = _add_docstr(
torch.conv1d,
r"""
conv1d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1) -> Tensor
Applies a 1D convolution over an input signal composed of several input
planes.
See :class:`~torch.nn.Conv1d` for details and output shape.
Args:
input: input tensor of shape :math:`(\text{minibatch} , \text{in\_channels} , iW)`
weight: filters of shape :math:`(\text{out\_channels} , kW)`
...
""",
)
In-Place Variants
For in-place operations (ending with _), reference the original:
add_docstr_all(
"abs_",
r"""
abs_() -> Tensor
In-place version of :meth:`~Tensor.abs`
""",
)
Alias Functions
For aliases, simply reference the original:
add_docstr_all(
"absolute",
r"""
absolute() -> Tensor
Alias for :func:`abs`
""",
)
Common Patterns
Shape Documentation
Use LaTeX math notation for tensor shapes:
:math:`(\text{minibatch} , \text{in\_channels} , iH , iW)`
Reusable Argument Definitions
For commonly used arguments, define them once and reuse:
common_args = parse_kwargs(
"""
dtype (:class:`torch.dtype`, optional): the desired type of returned tensor.
Default: if None, same as this tensor.
"""
)
# Then use with .format():
r"""
...
Keyword args:
{dtype}
{device}
""".format(**common_args)
Template Insertion
Insert reproducibility notes or other common text:
r"""
{tf32_note}
{cudnn_reproducibility_note}
""".format(**reproducibility_notes, **tf32_notes)
Complete Example
Here's a complete example showing all elements:
def gumbel_softmax(
logits: Tensor,
tau: float = 1,
hard: bool = False,
eps: float = 1e-10,
dim: int = -1,
) -> Tensor:
r"""
Sample from the Gumbel-Softmax distribution and optionally discretize.
Args:
logits (Tensor): `[..., num_features]` unnormalized log probabilities
tau (float): non-negative scalar temperature
hard (bool): if ``True``, the returned samples will be discretized as one-hot vectors,
but will be differentiated as if it is the soft sample in autograd. Default: ``False``
dim (int): A dimension along which softmax will be computed. Default: -1
Returns:
Tensor: Sampled tensor of same shape as `logits` from the Gumbel-Softmax distribution.
If ``hard=True``, the returned samples will be one-hot, otherwise they will
be probability distributions that sum to 1 across `dim`.
.. note::
This function is here for legacy reasons, may be removed from nn.Functional in the future.
Examples::
>>> logits = torch.randn(20, 32)
>>> # Sample soft categorical using reparametrization trick:
>>> F.gumbel_softmax(logits, tau=1, hard=False)
>>> # Sample hard categorical using "Straight-through" trick:
>>> F.gumbel_softmax(logits, tau=1, hard=True)
.. _Link 1:
https://arxiv.org/abs/1611.00712
"""
# implementation
Quick Checklist
When writing a PyTorch docstring, ensure:
- [ ] Use raw string (
r""") - [ ] Include function signature on first line
- [ ] Provide brief description
- [ ] Document all parameters in Args section with types
- [ ] Include default values for optional parameters
- [ ] Use Sphinx cross-references (
:func:,:class:,:meth:) - [ ] Add mathematical formulas if applicable
- [ ] Include at least one example in Examples section
- [ ] Add warnings/notes for important caveats
- [ ] Link to related module class with
:class: - [ ] Use proper math notation for tensor shapes
- [ ] Follow consistent formatting and indentation
Common Sphinx Roles Reference
:class:\~torch.nn.Module`` - Class reference:func:\torch.function`` - Function reference:meth:\~Tensor.method`` - Method reference:attr:\attribute`` - Attribute reference:math:\equation`` - Inline math:ref:\label`` - Internal reference``code``- Inline code (use double backticks)
Additional Notes
- Indentation: Use 4 spaces for code, 2 spaces for continuation of parameter descriptions
- Line length: Try to keep lines under 100 characters when possible
- Periods: End sentences with periods, but not the signature line
- Backticks: Use double backticks for code:
``True`` ``None`` ``False`` - Types: Common types are
Tensor,int,float,bool,str,tuple,list, etc.