diff --git a/lint.go b/lint.go
index 8dc4ae5..59fea7c 100644
--- a/lint.go
+++ b/lint.go
@@ -187,6 +187,7 @@
 	f.lintUnexportedReturn()
 	f.lintTimeNames()
 	f.lintContextKeyTypes()
+	f.lintContextArgs()
 }
 
 type link string
@@ -1436,6 +1437,27 @@
 	}
 }
 
+// lintContextArgs examines function declarations that contain an
+// argument with a type of context.Context
+// It complains if that argument isn't the first parameter.
+func (f *file) lintContextArgs() {
+	f.walk(func(n ast.Node) bool {
+		fn, ok := n.(*ast.FuncDecl)
+		if !ok || len(fn.Type.Params.List) <= 1 {
+			return true
+		}
+		// A context.Context should be the first parameter of a function.
+		// Flag any that show up after the first.
+		for _, arg := range fn.Type.Params.List[1:] {
+			if isPkgDot(arg.Type, "context", "Context") {
+				f.errorf(fn, 0.9, link("https://golang.org/pkg/context/"), category("arg-order"), "context.Context should be the first parameter of a function")
+				break // only flag one
+			}
+		}
+		return true
+	})
+}
+
 // receiverType returns the named type of the method receiver, sans "*",
 // or "invalid-type" if fn.Recv is ill formed.
 func receiverType(fn *ast.FuncDecl) string {
diff --git a/testdata/context.go b/testdata/context.go
new file mode 100644
index 0000000..501c69b
--- /dev/null
+++ b/testdata/context.go
@@ -0,0 +1,24 @@
+// Test that context.Context is the first arg to a function.
+
+// Package foo ...
+package foo
+
+import (
+	"context"
+)
+
+// A proper context.Context location
+func x(ctx context.Context) { // ok
+}
+
+// A proper context.Context location
+func x(ctx context.Context, s string) { // ok
+}
+
+// An invalid context.Context location
+func y(s string, ctx context.Context) { // MATCH /context.Context should be the first parameter.*/
+}
+
+// An invalid context.Context location with more than 2 args
+func y(s string, r int, ctx context.Context, x int) { // MATCH /context.Context should be the first parameter.*/
+}
